java - 滚动条在 JPanel 中不可见

标签 java swing jpanel jscrollpane preferredsize

我用 Java 创建了一个 GUI,如下所示 -

'panel_mid' 是中间的白色面板。我已将其添加到名为“panel_mid_scrollpane”的滚动 Pane 中。

除了“panel_mid”之外,还有更多面板 -

  • panel_left(包含“后退”按钮)
  • panel_right(在右侧可见)

enter image description here

此 gui 的相关代码是 -

    panel_mid.setBorder(grayborder);
    panel_mid.setBounds(0, 0, 1100, 1060);
    panel_mid.setBackground(Color.white);
    panel_mid.add(obj.create_test_add_section);

    panel_mid_scrollpane = new JScrollPane(panel_mid);
    panel_mid_scrollpane.setLocation(150, 20);
    panel_mid_scrollpane.setSize(1000, 660);
    panel_mid_scrollpane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

每次单击 panel_mid 中显示的添加部分按钮时,都会向中间面板添加一个部分。当多次单击此按钮时,GUI 看起来像 -

enter image description here

正如您所看到的,添加面板时滚动条不会自动出现,因此最后一个面板只有一半可见。什么可能导致此问题?

谢谢!

最佳答案

当添加到滚动 Pane 的组件的首选大小大于滚动 Pane 的大小时,滚动条会自动出现。

您似乎使用了空布局。

//panel_mid.setBounds(0, 0, 1100, 1060);
panel_mid.setBackground(Color.white);
panel_mid.add(obj.create_test_add_section);

panel_mid_scrollpane = new JScrollPane(panel_mid);
//panel_mid_scrollpane.setLocation(150, 20);
//panel_mid_scrollpane.setSize(1000, 660);

不要在 setSize() 和 setLocation 中使用空布局。 Swing 被设计为与布局管理器一起使用。如果您使用布局管理器,那么滚动条将自动工作,并且将自动为您计算大小和位置。

阅读 Layout Mangers 上的 Swing 教程.

关于java - 滚动条在 JPanel 中不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16737767/

相关文章:

java - 单例实例化

java - Java Gui 中的 setText 问题 JGui 在 Java 中编号不正确

java - JTree,始终显示 "edit mode"中的所有节点

java - 更改 JScrollPane 的 View ,以便 JEditorPane 的特定部分可见

java - 图像未显示在 JFrame 中

swing - 如何在 JPanel、Java Swing 的中心添加 JToolBar?

java - 销毁日期对象

Java ThreadPoolExecutor 策略, 'Direct Handoff' 带队列?

Java BufferedImage/JPanel 不使用 JButton 更新新的黑色像素行

java - 两个带有网格的 JFrame 在一个类中