将JScrollPane添加到GridBagLayout

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将JScrollPane添加到GridBagLayout相关的知识,希望对你有一定的参考价值。

每次我点击程序中的一个按钮,我都会向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的盒子,但滚动窗格无处可见。

答案
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可以确定是否需要滚动条。

以上是关于将JScrollPane添加到GridBagLayout的主要内容,如果未能解决你的问题,请参考以下文章

动态创建 jCheckBox 并添加到 jScrollPane

JScrollPane添加到JFrame中,怎么不显示呢?

JScrollPane没有出现

为啥 JOptionPane 中的 JScrollPane 不显示其所有内容?

为啥 JScrollpane 没有添加到我的 TextEditor 中的 JTextArea?

jScrollPane + 嵌入式 Youtube 视频悬停