在已经初始化之后更新标签内容

时间:2014-10-14 13:22:06

标签: java swing jtabbedpane

我有一个名为Status的标签,我已在主窗口中初始化,如下所示:

private static void setupTabbedPane ( JTabbedPane tabbedPane )
{
    //Create tab related components
    status = new Summary();

    // Create tabs
    tabbedPane.addTab ("Status", new WebScrollPane(status.summaryPage));
    tabbedPane.setBackgroundAt(0, Color.DARK_GRAY);
    tabbedPane.setForegroundAt(0, Color.BLACK);
}

它添加了一个仅仅是JPanel的summaryPage。我添加了一个功能,当用户右键单击时,他们可以使用摘要页面中的内容启动缩小的窗口(新JFrame),现在我正在尝试在用户关闭时将该摘要页面放回到该状态选项卡中他们推出的那个小窗口。这就是我所拥有的:

public class MiniSmryWindow {
public JFrame frame;

public MiniSmryWindow() {
    // Initialize Mini Window
    frame = new JFrame("Status");
    frame.setLayout(new BorderLayout());
    frame.setSize(200, 300);
    frame.setLocationRelativeTo(null);
    frame.add(BootWindow.status.summaryPage);
    frame.setVisible(true);

    frame.addWindowListener(new java.awt.event.WindowAdapter() {
        @Override
        public void windowClosing(java.awt.event.WindowEvent windowEvent) {

            System.out.println("Closing mini window");
            BootWindow.tabbedPane.setTabComponentAt(0, BootWindow.status.summaryPage);
        }
    });
}

现在组件被添加到选项卡标题不在选项卡面板内的位置,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

  

现在组件被添加到标签标题不在里面的位置   选项卡的面板,我该如何解决这个问题?

是的,这是setTabComponentAt()方法的预期行为:

  

"设置负责呈现标题的组件   指定标签。空值表示JTabbedPane将呈现标题   和/或指定选项卡的图标。非空值表示   组件将呈现标题,JTabbedPane将不呈现   标题和/或图标。"

您应该使用insertTab()代替。

  

"在给定索引处插入给定组件的新选项卡,   由给定的标题和/或图标表示,其中任何一个都可以   空"

例如:

BootWindow.tabbedPane.insertTab("title", null, BootWindow.status.summaryPage, "tool tip", 0);

注意:由于选项卡式窗格已经显示,因此在插入选项卡后可能应该重新验证并重新绘制(尽管未经过测试):

BootWindow.tabbedPane.insertTab("title", null, BootWindow.status.summaryPage, "tool tip", 0);
BootWindow.tabbedPane.revalidate();
BootWindow.tabbedPane.repaint();