JScrollPane阻止与内容的交互

时间:2015-03-10 02:23:25

标签: java swing awt jscrollpane

我的JScrollPane客户端是Container,其布局为BoxLayout

BoxLayout内是多个(动态生成的)JPanels。但是,JScrollPane不会滚动(滚动条显示并调整大小,但您实际上无法移动它们),而且我也无法与{{1}的内容进行交互}}

以下是代码:

JScrollPane

如果我只是替换行

,它可以正常工作
public static void setupOrderTable(){
        orderTable = new Container(); 
        scroller = new JScrollPane(orderTable ,ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        scroller.setPreferredSize(new Dimension(810,500));
        orderTable.setLayout(new BoxLayout(orderTable,BoxLayout.Y_AXIS));
        if (orderTable!=null)
            mainContainer.remove(orderTable);
        for (Order o: OrderManager.getList()){
            orderTable.add(new ControlRowItem(o));
        }
        mainContainer.add(scroller,BorderLayout.CENTER);
        frame.pack();
    }

mainContainer.add(scroller,BorderLayout.CENTER);

但是它显然不会滚动。否则,正如我所说,滚动条不起作用,我无法与orderTable中的任何JPanel交互。

Here's a screenshot if that helps

1 个答案:

答案 0 :(得分:1)

不要将重物(Container)成分与轻质(JScrollPane)成分混合,它们只是不能很好地混合。将orderTable更改为JPanel而不是

虽然它假设已经在Java 6中得到修复,但我已经看到太多奇怪的事情,试图让它值得任何努力。简单地说,不要在Swing容器中混合重物(AWT)