如何将JPanel添加到JScrollPane,而JPanel的组件比自己大?

时间:2015-01-29 18:14:44

标签: java swing

我的问题显示我是JAVA的新成员;)

我尝试将JPanel添加到JScrollPane但是当我添加大于JPanel的组件时,JScrollPane无效。

我可以通过将JScrollPane设置为小于JPanel来修复它,但这不是一个正确的解决方案(我想稍后动态地向JPannel添加组件)。

scroll2.setPreferredSize(new Dimension(500,500));

什么是解决方案?谢谢

public class 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();

        }
    });

}

}

enter image description here

1 个答案:

答案 0 :(得分:0)

ScrollPaneJPanel,但JPanel不会改变大小以适应JButton的大小,因为您设置了finalPan2.setPreferredSize(new Dimension(620, 540));首选尺寸。如果您取出{{1}},面板应调整大小以适应按钮,滚动窗格应该有效。