Java 当JPanel的组件比它本身大时,如何将JPanel添加到JScrollPane中?
我的问题表明我是JAVA新手 我试图将JPanel添加到JScrollPane中,但当我添加一个比JPanel大的组件时,JScrollPane无法工作 我可以通过将JScrollPane设置为比JPanel小来解决这个问题,但这不是一个正确的解决方案,我希望稍后动态地将组件添加到JPanel scroll2.SetPreferredSizeNewDimension500500 什么是解决方案?多谢各位 公共类主框架{Java 当JPanel的组件比它本身大时,如何将JPanel添加到JScrollPane中?,java,swing,Java,Swing,我的问题表明我是JAVA新手 我试图将JPanel添加到JScrollPane中,但当我添加一个比JPanel大的组件时,JScrollPane无法工作 我可以通过将JScrollPane设置为比JPanel小来解决这个问题,但这不是一个正确的解决方案,我希望稍后动态地将组件添加到JPanel scroll2.SetPreferredSizeNewDimension500500 什么是解决方案?多谢各位 公共类主框架{ private JPanel finalPan2; JScrollPane
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的滚动窗格,但是JPanel不会更改大小以适应JButton的大小,因为您已经设置了它的首选大小。如果取出finalPan2.setPreferredSizenew Dimension620540;,面板应该调整大小以适应按钮,滚动窗格应该可以工作。JScrollPane在将大按钮添加到Jpanel时不会上下移动。您可以查看scroll2.setPreferredSizeNewDimension500500;线路被删除了。我想这是因为你有一个滚动面板,但是面板没有改变按钮的大小。如果不设置JPanel的首选大小会发生什么?是的,现在它可以工作了:谢谢。但是在一行中添加组件,而不是在其他组件的下面!我如何解决这个问题?这与面板的LayoutManager有关。你使用的是FlowLayout,我对此一无所知。我建议您在决定使用哪个管理器以及如何为其编码方面寻求帮助。谢谢,您解决了这个问题。如果你把你的评论作为答案,我可以投票给你正确的答案