当前位置: 首页 > 知识库问答 >
问题:

将JScrollPane添加到JFrame

丌官昊天
2023-03-14

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

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

我可以将JPanel添加到JFrame,或者将JScrollPane添加到JFrame,并且它们可以正确显示。我很难将它们都添加到JFrame并显示它们。

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

编辑

问题不在于布局(至少我不认为是这样),问题是ScrollPane没有正确显示。这是一个图像来显示我的意思:

http://canning.co.nz/Java/ScrollPane.png

代码如下:

    GridBagConstraints gbc = new GridBagConstraints();
    gbc.gridwidth = GridBagConstraints.REMAINDER;
    guiPanel.add(scrollPane, gbc);
    guiPanel.add(buttons, gbc);        

    guiFrame.add(guiPanel, BorderLayout.CENTER);
    guiFrame.setVisible(true);

共有2个答案

充星腾
2023-03-14

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);

请尝试让我知道,如果它不起作用,我会发送完整的代码与网格布局。

曾光远
2023-03-14

默认情况下,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);
 类似资料:
  • 问题内容: 我有一个gui,它的Panel包含一系列标签和TextField,并使用spring布局(这是mainPanel),而另一个Panel仅包含button(buttonPanel)。我正在尝试使我的mainPanel也具有垂直滚动条。我想实现我的GUI,以便在JFrame中有2个面板。mainPanel出现在框架的顶部,而buttonPanel出现在mainPanel的下方。 我的问题是

  • 问题内容: 我有一个JList,我需要将其放置在滚动窗格中,因为我是从数据库中获取JList的,其值可能会大大增加。我需要能够向下滚动它们,所以我写道: 因为看不到任何ScrollPane,我在做什么错? 问题答案: 该列表已经包含在滚动窗格中,因此您不能将列表添加到主面板。仅滚动窗格。 您做错的另一件事是不使用布局管理器,而是设置组件的边界和大小。不要那样做 让布局管理器为您定位和调整组件的大小

  • 我目前有一个主JFrame包含几个JPanels,每个面板中都有一些文本。创建JPanels的代码在一个单独的类中(它“实现”JPanels)。如何仅向单个面板添加JScrollPane? 我已经花了一些时间尝试这样做,但什么也没有发生。顺便说一下,我的JPanel使用GridLayout 上面的类是另一个面板类的实例变量,它是主面板“MenuHold”的实例变量。但使用“MenuHolder”的

  • 我试图将JTable添加到JScrollPane中。但是做完这个我就看不到桌子了。 我怎么了?

  • 请帮助我,我正在创建像sublime text editor这样的软件。我想显示可用的字符集列表,下面是主要问题的图片。在这张图片中,我看到的菜单弹出窗口至少有200多个字符集,但只有显示。。。某物但是要显示所有字符集。没有为该弹出菜单添加滚动条的选项 我的软件图片有问题,请看那个红色圆圈。 请任何人帮助我如何添加滚动条到那个

  • 问题内容: 我正在尝试向JTable中的特定列添加滚动功能。我已经实现了一个自定义的TableCellRenderer组件,并且可以看到表中的滚动窗格很好,但是我无法滚动它。我也尝试实现TableCellEditor,但没有任何运气。 有谁知道如何使包含scrollPane的单元格可滚动? 问题答案: 使用TableCellRenderer不可能添加任何滚动行为,因为它不接收任何事件,仅绘制组件。