gpt4 book ai didi

java - JSplitPanel(或 JTabbedPane)有什么问题?

转载 作者:行者123 更新时间:2023-12-02 07:55:25 25 4
gpt4 key购买 nike

我有两个面板要显示给用户。我决定将它们添加到 JTabbedPane 中。我还想让用户同时并排查看它们。所以我将这两个面板添加到我的 JTabbedPane 中,然后我创建了一个 JSplitPanel :

    tabs.addTab("Align Image Points", imageControlPanel);
tabs.addTab("Align Map Points", mapControlPanel);
JSplitPane splitPane = new JSplitPane(
JSplitPane.HORIZONTAL_SPLIT, true, imageControlPanel,
mapControlPanel);
tabs.addTab("Side by side view", splitPane);

生成的 JTabbedPane 只有一个选项卡!当我删除 JSplitPane 时,一切正常。两个标签。然后我尝试简化问题以在此处发布,然后我想出了这个:

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JSplitPane;
import javax.swing.JTabbedPane;

public class Test {

public static void main(String[] args) {
JFrame f = new JFrame("Test");
JButton b1 = new JButton("First");
JButton b2 = new JButton("Second");
JSplitPane s = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,b1,b2);
JTabbedPane tabs = new JTabbedPane();
tabs.addTab("First", b1);
tabs.addTab("Second", b2);
tabs.addTab("Both", s);
f.getContentPane().add(tabs);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.pack();
f.setVisible(true);
}

}

这给了我另一个问题!它显示 3 个选项卡,但第三个选项卡的拆分 Pane 不显示任何按钮!

所以我的问题是 JSplitPanel 有什么问题?您不能让它显示已经显示在另一个选项卡中的对象吗?这个不成立。请帮助我。

(注意:我不想复制即将显示的组件,因为我希望它们是相同的引用)

最佳答案

Swing UI 是分层的,您只能将组件添加到层次结构一次。如果您将一个组件添加到多个容器中,您将得到不可预知的结果。您不想复制这些组件是正确的,但是您需要在 JTabbedPane 上有一个监听器,以便在选项卡的选择发生变化时从选项卡或 JSplitView 添加和删除每个组件。

tabs.addChangeListener( new ChangeListener() {
public void stateChanged(ChangeEvent e) {
// Reorganise the display based on the current tab selection.
}
}

关于java - JSplitPanel(或 JTabbedPane)有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1113799/

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