如何在JPanel上使用滚动条?(Swing)

3
我在处理JTextArea和JScrollPane时没有问题... 但是在这里...我有一个JPanel。我想在上面使用滚动条。 看一下我的JPanel:图片预览。 我想知道如何在NetBeans中实现它。我认为我应该进行一些自定义编码。 所以,我尝试像这样做: 1)右键单击jPanel2,自定义代码。 2)使用以下修改后的代码; 初始化代码:
jPanel2 = new javax.swing.JPanel();
scrb = new javax.swing.JScrollPane(jPanel2);
// Code of sub-components - not shown here

// Layout setup code - not shown here
scrb.setPreferredSize(jPanel2.getPreferredSize());
jPanel1.add(jPanel2, "card2");

变量声明代码:

private javax.swing.JPanel jPanel2;
private javax.swing.JScrollPane scrb;

然后再次运行我的项目......但是,唉。滚动条没有出现在运行的应用程序中。

我有什么遗漏吗?

我尝试操作jPanel2的大小,但是它没有起作用......滚动条没有出现。

4个回答

6
问题出在这一行:
jPanel1.add(jPanel2, "card2");

改写成这样:

jPanel1.add(scrb, "card2");

你所做的是将jPnael2添加到一个滚动窗格中,但是你却将jPanel2添加到了jPanel1中,因此滚动窗格根本没有显示出来。

但是,那段代码受NetBeans保护...如何解决呢? 我意识到这是因为我的jPanel1正在使用CardLayout...哎 :( - gumuruh
"但是,那段代码受NetBeans保护...怎么解决呢?" 学会如何使用你的工具(而不是让工具使用你)。 - Andrew Thompson

3

我想将scrb添加到jPanel1中,但是代码被Netbeans锁定了... 唉 :( - gumuruh

0
除了将滚动窗格添加到面板的其他建议之外,我不确定它是否有效,因为以下代码行:
scrb.setPreferredSize(jPanel2.getPreferredSize()); 

只有当添加到滚动窗格中的组件的首选大小大于滚动窗格的大小时,滚动条才会出现。因此,如果您的布局管理器尊重组件的首选大小,则永远不会满足此条件。


0

如果您使用的是NetBeans IDE,则最好使用GUI设计器来创建滚动窗格。使用以下步骤来实现滚动窗格:

    1. In Netbeans GUI editor, select all panels which requires scroll pane using CTRL+left click
    2. Right click on the highlighted panels, select the option 'Enclose in' -> Scroll Pane. This will add a scroll pane for the selected panels.
    3. If there are other elements than Panel(say JTree), select all the elements ->Enclose in ->Panel. Then enlose the new parent panel to scroll pane
    4. Make sure that 'Auto Resizing' is turned on for the selected parent panel(Right click on panel -> Auto resizing -> Tick both Horizontal and vertical)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接