将JScrollPane添加到GridBagLayout

问题描述 投票:0回答:1

每次我点击程序中的一个按钮,我都会向JPanel添加5行。最终,行溢出,我想添加一个JScrollPane,所以我可以向下滚动并查看新行。

我知道如何让它为TextArea工作,但我似乎无法弄清楚当我有一个GridBagLayout时如何使它工作。下面,我将附上设置我的面板的代码。

    JPanel panelMain = new JPanel();
    getContentPane().add(panelMain);

    JPanel panelForm = new JPanel(new GridBagLayout());
    panelMain.add(panelForm);

    JScrollPane scrollpane = new JScrollPane(panelForm);
    panelMain.add(scrollpane);

当我跑,我的代码我得到一个封闭GridBagLayout的盒子,但滚动窗格无处可见。

java swing user-interface layout-manager gridbaglayout
1个回答
2
投票
JPanel panelMain = new JPanel();
getContentPane().add(panelMain);

您通常会将滚动窗格直接添加到框架中。没有必要使用“panelMain”。

panelMain.add(panelForm);

那条线不是必需的。组件只能属于单个父组件。您稍后将“panelForm”添加到滚动窗格。

所以基本代码是:

JPanel panelForm = new JPanel(new GridBagLayout());
JScrollPane scrollpane = new JScrollPane(panelForm);
frame.add(scrollpane);

但滚动窗格无处可见。

滚动条仅在默认情况下需要时显示。添加空面板不会导致显示滚动条。单击几次按钮,使用相应的GridBagConstraints将子组件添加到“panelForm”。然后你需要使用:

panelForm.revalidate();
panelForm.repaint();

revalidate()导致调用布局管理器,因此scrollpane可以确定是否需要滚动条。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.