我的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交互。
答案 0 :(得分:1)
不要将重物(Container
)成分与轻质(JScrollPane
)成分混合,它们只是不能很好地混合。将orderTable
更改为JPanel
而不是
虽然它假设已经在Java 6中得到修复,但我已经看到太多奇怪的事情,试图让它值得任何努力。简单地说,不要在Swing容器中混合重物(AWT)