我正在尝试将垂直JScrollBar放在JPanel之上。我可以很容易地添加scoll bar,但是当我运行程序时,我的滚动条没有任何效果。我可以上下拖动它,但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);
}
答案 0 :(得分:2)
这是设计的。如果滚动条神奇地试图在其附近拾取面板并开始滚动它们,那将会很糟糕。
在较低级别,您可以将监听器添加到滚动条并自行实现滚动。您还必须告诉滚动条滚动多少。
但是,这不是你想要的。您需要一个围绕面板的JScrollPane。这样,你永远不会直接实例化滚动条,也不必处理滚动的低级机制(这非常复杂)。
答案 1 :(得分:2)
我假设您的initComponents()
方法设置了一堆组件并将它们添加到您的contentPane并建立您的对话框(无论是对话框还是框架)。
只需将JScrollPane
添加到该面板即可。
相反,请将您的pnlResults
添加到JScrollPane
实例,然后将 添加到您的contentPane。