1

我正在尝试将垂直 JScrollBar 放在 JPanel 之上。我可以很容易地添加 scoll 条,但是当我运行程序时,我的滚动条没有任何效果。我可以上下拖动它,但 JPanel 的内容不动。我已经阅读了所有我能找到的关于如何做到这一点的内容,这看起来很简单,但我显然遗漏了一些东西。

请注意,我的 JPanel 布局设置为 NULL。这是相关的代码。谢谢!

public JDlgResults(ArrayList<AnsweredProblem> probList) {
    initComponents();
    pnlResults.setLayout(null); //allows free form placing of JLabels

    /* Iterate over the ArrayList and add each problem to the results table */
    Iterator iter = probList.iterator();
    int row = 1;

    while(iter.hasNext()) {
        addRow(row, iter.next());
        row++;
    }

    JScrollBar jScrollResults = new javax.swing.JScrollBar();
    pnlResults.add(jScrollResults);
    jScrollResults.setBounds(590, 0, 17, 196);
}
4

2 回答 2

2

这是设计使然。如果滚动条神奇地试图拿起附近的面板并开始滚动它们,那将是一种糟糕的事情。

在较低级别上,您可以将侦听器添加到滚动条并自己实现滚动。您还必须告诉滚动条要滚动多少。

然而,这不是你想要的。您想要一个环绕面板的 JScrollPane。这样,您永远不会直接实例化滚动条,也不必处理滚动的低级机制(这非常复杂)。

于 2012-08-25T16:03:34.997 回答
2

我假设您的initComponents()方法设置了一堆组件并将它们添加到您的 contentPane 并建立您的对话框(无论是对话框还是框架)。

简单地将您添加JScrollPane到该面板不会成功。

相反,将您添加pnlResultsJScrollPane实例并使其成为的 contentPane。

于 2012-08-25T16:10:05.687 回答