Java 当JPanel的组件比它本身大时,如何将JPanel添加到JScrollPane中?

Java 当JPanel的组件比它本身大时,如何将JPanel添加到JScrollPane中?,java,swing,Java,Swing,我的问题表明我是JAVA新手 我试图将JPanel添加到JScrollPane中,但当我添加一个比JPanel大的组件时,JScrollPane无法工作 我可以通过将JScrollPane设置为比JPanel小来解决这个问题,但这不是一个正确的解决方案,我希望稍后动态地将组件添加到JPanel scroll2.SetPreferredSizeNewDimension500500 什么是解决方案?多谢各位 公共类主框架{ private JPanel finalPan2; JScrollPane

我的问题表明我是JAVA新手

我试图将JPanel添加到JScrollPane中,但当我添加一个比JPanel大的组件时,JScrollPane无法工作

我可以通过将JScrollPane设置为比JPanel小来解决这个问题,但这不是一个正确的解决方案,我希望稍后动态地将组件添加到JPanel

scroll2.SetPreferredSizeNewDimension500500

什么是解决方案?多谢各位

公共类主框架{

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,我对此一无所知。我建议您在决定使用哪个管理器以及如何为其编码方面寻求帮助。谢谢,您解决了这个问题。如果你把你的评论作为答案,我可以投票给你正确的答案