【问题标题】:How to Add JPanel to JScrollPane While JPanel Has Component Bigger Than Itself?当 JPanel 的组件大于自身时,如何将 JPanel 添加到 JScrollPane?
【发布时间】: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 以获取有关决定使用哪个经理以及如何为其编码的帮助。
  • 谢谢您,您解决了问题。如果您将您的评论作为答案,我可以投票选出正确答案。 :)

标签: java swing


【解决方案1】:

JPanel 具有 ScrollPane,但 JPanel 不会更改大小以适应 JButton 的大小,因为您已设置其首选大小。如果您取出finalPan2.setPreferredSize(new Dimension(620, 540));,面板应该调整大小以适应按钮,并且滚动面板应该可以工作。

【讨论】:

    猜你喜欢
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多