gpt4 book ai didi

java - 类中 SwingX 的 JXCollapsiblePane 正在影响该类创建的其他对象中创建的所有其他 Pane

转载 作者:行者123 更新时间:2023-11-30 06:34:09 26 4
gpt4 key购买 nike

我有一个类,它为 GridLayout 中的网格创建元素,该类基本上由 4 个打包在一起的面板组成。

我希望其中一个面板(包含 JTextArea)是可折叠的,因为它相当冗长,而且我不希望它占用太多的屏幕空间。自然地,我遇到了 SwingX 库并使用 JXCollapsiblePane 来执行此操作,尽管它按预期工作,但每当我单击其中一个 JXCollapsiblePanes 上的切换按钮时,它似乎都会持续影响所有其他 JXCollapsiblePanes。它实际上并没有打开它们,但它使窗口扩展以容纳空间,就像它们被打开一样。如果您想要更好的描述,我可以拍照,但稍后再说。我该如何做到这一点,这样它就不会这样做?我很确定我没有使用任何静态属性,所以我不确定为什么要这样做。

顺便说一句,如果有人能告诉我这是否是正确的编码风格(我觉得我正在做的事情对于 Swing 新手的 super 嵌套面板来说确实效率很低),那就太好了。

以下是我的项目中的相关代码片段:

        JXCollapsiblePane collapsiblePane = new JXCollapsiblePane();
JButton toggle = new JButton(collapsiblePane.getActionMap().get(JXCollapsiblePane.TOGGLE_ACTION));
toggle.addActionListener(e -> {
toggle.setText(collapsiblePane.isCollapsed() ? "▼" : "▶");
});
toggle.setText("▶");
toggle.setPreferredSize(new Dimension(20, 20));
Border emptyBorder = BorderFactory.createEmptyBorder();
toggle.setBorder(emptyBorder);
resultTextPanel.add(toggle);
collapsiblePane.setCollapsed(true);
collapsiblePane.setSize(250, 60);
gridElemPanel.add(resultTextPanel, BorderLayout.NORTH);
...
if (ngramText != null && !ngramText.contains("null")) {
JTextArea ngramLabel = new JTextArea(ngramText);
ngramLabel.setLineWrap(true);
ngramLabel.setWrapStyleWord(true);
ngramLabel.setFont(new Font("Courier", Font.PLAIN, 12));
JScrollPane scrollPane = new JScrollPane(ngramLabel);
scrollPane.setPreferredSize(new Dimension(250, 60));
scrollPane.getHorizontalScrollBar().setUnitIncrement(16);
collapsiblePane.add(scrollPane);
collapsiblePane.setPreferredSize(scrollPane.getPreferredSize());
gridElemPanel.add(collapsiblePane, BorderLayout.SOUTH);
}

最佳答案

GridLayout :

The container is divided into equal-sized rectangles

因此,当您更改其中一个时,所有内容都会相应更改。

如果您需要更大的灵 active (以更复杂的代价),请考虑 GridBagLayout .

关于java - 类中 SwingX 的 JXCollapsiblePane 正在影响该类创建的其他对象中创建的所有其他 Pane ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45498085/

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