Java JScrollPane有时无法成功调整大小
我有代码的下一部分:Java JScrollPane有时无法成功调整大小,java,swing,synchronize,Java,Swing,Synchronize,我有代码的下一部分: final JList<String> list = new JList<String>(strings); list.setLayoutOrientation(JList.VERTICAL); list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); /* Create scroll pane instance */ JScrollPane sc
final JList<String> list = new JList<String>(strings);
list.setLayoutOrientation(JList.VERTICAL);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
/* Create scroll pane instance */
JScrollPane scroll = new JScrollPane(list) {
@Override
public Dimension getPreferredSize()
{
BookFrame frame = BookFrame.instance();
Container parent = getParent();
return new Dimension(frame.getWidth(), parent.getHeight() - parent.getComponent(parent.getComponentCount() - 1).getHeight() - 14);
}
};
/* Create button instance */
JButton button = new JButton("Add Directory");
/* Add new panel */
JPanel panel = new JPanel();
panel.add(scroll);
panel.add(button);
最终JList列表=新JList(字符串);
list.setLayoutOrientation(JList.VERTICAL);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
/*创建滚动窗格实例*/
JScrollPane scroll=新的JScrollPane(列表){
@凌驾
公共维度getPreferredSize()
{
BookFrame=BookFrame.instance();
容器父级=getParent();
返回新维度(frame.getWidth(),parent.getHeight()-parent.getComponent(parent.getComponentCount()-1.getHeight()-14);
}
};
/*创建按钮实例*/
JButton按钮=新JButton(“添加目录”);
/*添加新面板*/
JPanel面板=新的JPanel();
面板。添加(滚动);
面板。添加(按钮);
此代码在程序启动时运行,有时按钮高度为正常值(例如15),但有时为0。我认为问题在于JScrollPane实例——它是在JButton实例之前创建的——但我无法同步。我还尝试在JScrollPane scroll=…
之前添加JButton button=…
,但它也不起作用
我是Java新手,请告诉我我做错了什么。我看不出有任何理由需要重写getPreferredSize()方法。我想这就是问题所在
JScrollPane scroll = new JScrollPane(list)
我不知道“列表”是什么,但假设您使用的是JList,则可以使用:
list.setVisibleRowCount(...);
指示列表大小对应的行数。然后,滚动窗格将显示该大小,如果需要,将显示滚动条。我看不出有任何理由需要覆盖getPreferredSize()方法。我想这就是问题所在
JScrollPane scroll = new JScrollPane(list)
我不知道“列表”是什么,但假设您使用的是JList,则可以使用:
list.setVisibleRowCount(...);
指示列表大小对应的行数。然后,滚动窗格将达到该大小,如果需要,将显示滚动条。但是如何动态调整我的
JScrollPane
?如何使用setVisibleRowCount(…)
?@ventaquil,添加到JFrame中心的任何组件都会随着帧大小的调整而动态调整大小。setVisibleRowCount()是使用pack()方法时的建议。有关更多信息和工作示例,请阅读上Swing教程的部分。下载theokay-问题在于JPanel
。当我添加scroll bygetContentPane().add(…)
methodsetVisibleRowCount(…)
工作正常。谢谢:)但是如何动态调整我的JScrollPane
?如何使用setVisibleRowCount(…)
?@ventaquil,添加到JFrame中心的任何组件都会随着帧大小的调整而动态调整大小。setVisibleRowCount()是使用pack()方法时的建议。有关更多信息和工作示例,请阅读上Swing教程的部分。下载theokay-问题在于JPanel
。当我添加scroll bygetContentPane().add(…)
methodsetVisibleRowCount(…)
工作正常。谢谢:)