【发布时间】:2015-01-29 18:14:43
【问题描述】:
我的问题表明我是 JAVA 新手 ;)
我正在尝试将JPanel 添加到JScrollPane,但是当我添加大于JPanel 的组件时,JScrollPane 不起作用。
我可以通过将 JScrollPane 设置为小于 JPanel 来修复它,但这不是正确的解决方案(我想稍后动态地将组件添加到 JPannel)。
scroll2.setPreferredSize(new Dimension(500, 500));
什么是解决方案?谢谢
公共类 Main 扩展 JFrame {
private JPanel finalPan2;
JScrollPane scroll2;
public Main() throws HeadlessException {
super("V4.0.3");
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
e.printStackTrace();
}
setSize(520, 540);
setLocation(0, 200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new FlowLayout());
setResizable(false);
setVisible(true);
finalPan2 = new JPanel(new FlowLayout(FlowLayout.CENTER));
finalPan2.setPreferredSize(new Dimension(620, 540));
JButton bb = new JButton("Big Button");
bb.setPreferredSize(new Dimension(50, 800));
finalPan2.add(bb);
scroll2 = new JScrollPane(finalPan2);
scroll2.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scroll2.setPreferredSize(new Dimension(500, 500));
add(scroll2, BorderLayout.CENTER);
setLocationRelativeTo(null);
}
public static void main(String args[]) {
EventQueue.invokeLater(new Runnable() {
// @Override
public void run() {
Main ba = new Main();
}
});
}
}
【问题讨论】:
-
将大按钮添加到 Jpanel 时,JScrollPane 不会上下移动。你可以看看 scroll2.setPreferredSize(new Dimension(500, 500));行被删除。
-
啊。我认为这是因为您有面板的 ScrollPane,但面板不会更改按钮的大小。如果不设置 JPanel 的首选大小会怎样?
-
是的,现在可以了 :) 谢谢。但是连续添加组件而不是彼此之间!我该如何解决这个问题?
-
这与 Panel 的 LayoutManager 有关。你使用的是
FlowLayout,我对此一无所知。我建议查看this tutorial 以获取有关决定使用哪个经理以及如何为其编码的帮助。 -
谢谢您,您解决了问题。如果您将您的评论作为答案,我可以投票选出正确答案。 :)