2012-08-25 133 views
1

我想把一个垂直的JScrollBar放在JPanel之上。我可以很容易地添加滑动条,但是当我运行该程序时,我的滚动条没有任何影响。我可以上下拖动它,但JPanel的内容不会移动。我已经阅读了所有关于如何做到这一点的信息,而且看起来非常直截了当,但我明显错过了一些东西。JScrollBar不做任何事情

请注意,我的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); 
} 
+1

如果您要从'initComponents()'提供相关代码,可以提供更多指导。 – akf

+0

为了更快地获得更好的帮助,请发布[SSCCE](http://sscce.org/)。 –

+0

1)*“我的JPanel布局设置为NULL”。*如果不是这个问题的原因,那么别人的原因。 ***使用布局!*** 2)请学习常见的[Java命名约定](http://java.sun.com/docs/books/jls/second_edition/html/names.doc.html#73307)(特别是用于名称的情况),用于类,方法和属性名称并一致使用它。 –

回答

2

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

只需将您的JScrollPane添加到该面板不会做的伎俩。

取而代之,将您的pnlResults添加到JScrollPane实例,并使您的contentPane。

+0

现在我明白了。谢谢! – Alex

2

这是设计。如果滚动条神奇地试图拾起附近的面板并开始滚动它们,那将会很糟糕。

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

但是,这不是你想要的。你需要一个JScrollPane来包装你的面板。这样,你就不会直接实例化滚动条,也不必处理滚动的低级机制(这很复杂)。