gpt4 book ai didi

java - 如何更改 JPanel 的大小以适应动态生成的 JBList?

转载 作者:行者123 更新时间:2023-12-01 10:33:03 24 4
gpt4 key购买 nike

我正在尝试为 IntelliJ 创建一个弹出插件。弹出窗口包含一个 JPanel(parentPanel),其中包含一个 JList(我使用 JBList,它只是 Intellij 的子类)和 JTextField。列表的内容是动态构建的,具体取决于用户按 TAB 时 JTextField 的内容。

这就是我目前正在尝试的。结果是使用正确的元素构造了一个新的 JList,但 JPanel 保持完全相同的大小,因此 JList 的大部分被遮挡。如何展开面板(和整个弹出窗口)以使整个列表可见?

我对 JPanel 做错了什么,还是弹出窗口本身的大小受到限制?

parentPanel 从此行接收 GridLayout

this.setLayout(new GridLayout(2,1));

这是修改 JList 的代码。

DefaultListModel listModel = (DefaultListModel) parentPanel.getFileList().getModel();
listModel.removeAllElements();
VirtualFile[] children = currentPathFile.getChildren();

for(int i = 0; i < children.length; ++i) {
listModel.addElement(children[i].getPath());
}
parentPanel.remove(1); // The list is the panel's second child
parentPanel.add(new JBList(listModel));
parentPanel.revalidate();
parentPanel.repaint();

即使我给 GridLayout 10 行,JList 也只占用一行。 enter image description here

最佳答案

如果parentPanel是一个JPanel,它的默认布局是FlowLayout,它保留初始的首选大小,通常由首选大小定义原始内容。尝试将其更改为 GridLayout,这将允许列表随着封闭面板大小的调整而增大和缩小。

That doesn't work either. GridLayout code has been added.

因为JBList延伸JList ,您也许可以使用 setVisibleRowCount(),如图 here .

关于java - 如何更改 JPanel 的大小以适应动态生成的 JBList?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34979557/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com