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

将JScrollpane添加到包含多个JPanel的JPanel中

高功
2023-03-14

我有一个JFrame(黑色)包含一个主JPanel(灰色),这个JPanel包含另外三个JPanels:North和South(红色)以及Center(蓝色)。中央的蓝色JPanel将在程序过程中动态添加大量的JPanel(绿色)。当中心JPanel已满时,我希望一个JScrollbar自动出现,向下滚动中心面板,并看到它包含的所有子(绿色)面板。谁能帮帮我吗?问题是滚动条根本没有出现,如果我在蓝色的JPanel容器中添加15个绿色的JPanels,我只能看到10个,并且无法向下滚动。

这是我到目前为止尝试过的代码类型...

    JPanel panelNorth = new JPanel(new GridBagLayout());
    panelNorth.setPreferredSize(new Dimension(1000,100);
    //add some labels and buttons

    JPanel panelCenter = new JPanel();
    panelCenter.setLayout(new BoxLayout(panelCenter, BoxLayout.Y_AXIS));
    panelCenter.setPreferredSize(new Dimension(1000,500)
    JPanel panel1 = new JPanel(new GridLayout(1, 10));
    panel1.setPreferredSize(new Dimension(1000,50));
    panelCenter.add(panel1);
    //...etc dynamically


    JPanel panelSouth = new JPanel(new GridBagLayout());
    panelSouth.setPreferredSize(new Dimension(1000,100);
    //add some labels and buttons

    JScrollPane scrollPaneCenter = new JScrollPane(panelCenter,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    //panelCenter must be scrollable when too many panels are added to panelCenter

    //add everything to the main panel container
    JPanel panelContainer = new JPanel(new BorderLayout(3,3));
    panelContainer.setBorder(new EmptyBorder(5,5,5,5));
    panelContainer.add(panelNorth,BorderLayout.NORTH);
    panelContainer.add(scrollPaneCenter,BorderLayout.CENTER);
    panelContainer.add(panelSouth,BorderLayout.SOUTH);

    //add everything to frame   
    JFrame frame = new JFrame();
    frame.add(panelContainer);

谢谢你。

 JScrollPane scrollPaneCenter = new    JScrollPane(panelCenter,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
 JScrollPane scrollPane = new JScrollPane(panelCentre,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);

我得到的是:

我现在可以看到它了,它在正确的地方,我只是不能向下滚动看到我的其他组件。

共有1个答案

钮瀚
2023-03-14

通过切换修复了它

panelCenter.setPreferredSize(new Dimension(1000,500);

scrollPane.setPreferredSize(new Dimension(1000,500));
 类似资料:
  • 问题内容: 我有一个gui,它的Panel包含一系列标签和TextField,并使用spring布局(这是mainPanel),而另一个Panel仅包含button(buttonPanel)。我正在尝试使我的mainPanel也具有垂直滚动条。我想实现我的GUI,以便在JFrame中有2个面板。mainPanel出现在框架的顶部,而buttonPanel出现在mainPanel的下方。 我的问题是

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

  • 我目前正在尝试使用Swift中的GridBagLayout构建GUI。 在尝试为我正在处理的项目制作GUI时,遇到了一个问题: 创建物品列表时,面板超过了我的屏幕高度,因此我将框架的首选大小设置为900像素。 但是,该列表的高度超过900像素。因此,我尝试将一个JScrollPane添加到包含列表的面板中。只是没有一个。 我的框架架构是这样的:框架f- 我将ScrollPane应用于这些对象中的任

  • 因此,我的问题是面板被插入到JScrollPane中,这些面板的大小正在减小,但没有滚动条。 这是我的代码,我已经播种很远:

  • 我已经在这个问题上搜索了几个小时,但似乎没有任何效果。 我有一个JTable,框架内有一个JPanel。该表包含来自数据库的数据,但要存储大量数据(因此需要JScrollPane) 下面是我的代码: 我的代码可能不是很好,因为我已经遵循了几个关于如何克服这个问题的教程,并将它们混合在一起。 任何帮助都很感激! 编辑:

  • 我有一个JScrollPane,其中包含一个JPanel,该JPanel包含一组JPanels。 集合大小可以更改,这就是为什么我把它放在JScrollPane中的原因。 由于某种原因,无论我做什么,旋钮都不会出现在卷轴上。 正如您所看到的,主JPanel(预览)确实有一个布局。我读到如果布局为空,可能会发生这种情况。 有人知道怎么解决这个吗? null 这是我的代码: