我用 Java 创建了一个 GUI,如下所示 -
'panel_mid' 是中间的白色面板。我已将其添加到名为“panel_mid_scrollpane”的滚动 Pane 中。
除了“panel_mid”之外,还有更多面板 -
- panel_left(包含“后退”按钮)
- panel_right(在右侧可见)
此 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 看起来像 -
正如您所看到的,添加面板时滚动条不会自动出现,因此最后一个面板只有一半可见。什么可能导致此问题?
谢谢!
最佳答案
当添加到滚动 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/