将 JScrollPane 添加到 JFrame

问题描述 投票:0回答:2

我有一个有关向 Java 框架添加组件的问题。

我有一个带有两个按钮的 JPanel 和一个添加了 JTable 的 JScrollPane。我想将这两个添加到 JFrame 中。

我可以将 JPanel 添加到 JFrame,或将 JScrollPane 添加到 JFrame,它们会正确显示。我无法将它们添加到 JFrame 并显示它们。

是否有与 JFrames 相关的东西不允许这样做?任何帮助将不胜感激。

编辑

问题不在于布局(至少我不认为是),问题在于 ScrollPane 未正确显示。 这是代码:

    GridBagConstraints gbc = new GridBagConstraints();
    gbc.gridwidth = GridBagConstraints.REMAINDER;
    guiPanel.add(scrollPane, gbc);
    guiPanel.add(buttons, gbc);        
    
    guiFrame.add(guiPanel, BorderLayout.CENTER);
    guiFrame.setVisible(true);
java swing jframe jscrollpane
2个回答
3
投票

默认情况下,JFrame 有 Borderlayout。 BorderLayout 有五个标志。当您不指定任何标志时,它会将您的组件添加到带有中心标志的框架中。如果组件没有指定其他标志,中心标志将所有空间分配给添加了中心标志的组件。有关边框布局的更多信息,请访问以下链接: http://docs.oracle.com/javase/tutorial/uiswing/layout/border.html

您可以使用以下语句添加两者:

JFrame frame = new JFrame();

frame.add(new JPanel(), BorderLayout.NORTH);

frame.add(new JScrollpane(), BorderLayout.CENTER);

1
投票

GridBagLayout 不适合这种情况。使用更少的代码,您可以获得所需的代码。

JPanel pnlButton = new JPanel(new FlowLayout(FlowLayout.CENTER));
pnlButton.add(button1);
pnlButton.add(button2);

JFrame frame = new JFrame();
frame.add(scrollPane, BorderLayout.CENTER);
frame.add(pnlButton, BorderLayout.PAGE_END);

如果您只想使用 Gridbaglayout。然后你必须设置weightX,weightY,gridwidth和其他类似的属性

GridBagConstraints gbc = new GridBagConstraints();
gbc.gridwidth = GridBagConstraints.REMAINDER;
gbc.weightx=1.0;
gbc.weighy=1.0;
gbc.fill = GridBagConstraints.BOTH;
guiPanel.add(scrollPane, gbc);
gbc.gridwidth = 1;
gbc.fill = GridBagConstraints.NONE
guiPanel.add(buttons, gbc);        
guiFrame.add(guiPanel, BorderLayout.CENTER);
guiFrame.setVisible(true);

请尝试告诉我,如果不起作用,我将使用 GridBaglayout 发送完整的代码。

© www.soinside.com 2019 - 2024. All rights reserved.