我无法让我的滚动条与JDialog一起使用。我显然没有正确添加滚动条,但我无法弄清楚我做错了什么。
澄清更新
timeLineDialog = new JDialog();
scroller=new JScrollPane();
scroller.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
timeLineDialog.setLayout(layout);
timeLineDialog.setModalityType(ModalityType.MODELESS);
timeLineDialog.setTitle("Time Line Settings");
timeLineDialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
timeLineDialog.setPreferredSize(new Dimension(1004,400));
// all my components are added to the JDialog here
// I use GridBagLayout to essentially create rows of components
timeLineDialog.add(...);
timeLineDialog.add(scroller);
timeLineDialog.pack();
timeLineDialog.setLocationRelativeTo(GUI.getInstance().getFrame());
timeLineDialog.setVisible(true);
当我得到滚动条时,它很小,只放在第3行的末尾。
它永远不会真正滚动任何东西,当我添加行时,布局管理器只需缩小尺寸以使其适合,并且底部的按钮开始移出窗格。我究竟做错了什么? TIA。
答案 0 :(得分:2)
//我的所有组件都添加到JDialog中 //我使用GridBagLayout来创建组件行
您永远不会向JScrollPane添加任何组件。
代码应为:
JPanel panel = new JPanel( new GridBagLayout() );
panel.add(...);
panel.add(...);
//scroller=new JScrollPane();
scroller=new JScrollPane(panel);
...
//timeLineDialog.getContentPane().add(scroller);
timeLineDialog().add(scroller);
注意,不需要getContentPane()
方法,该组件将自动添加到内容窗格中。