【问题标题】:Java BorderLayout.add not working each time [duplicate]Java BorderLayout.add每次都不起作用[重复]
【发布时间】:2019-04-18 01:32:41
【问题描述】:

我正在创建一个选项卡式窗格,其中选项卡位于 WEST 或边框布局中,内容位于中间。当菜单项第一次单击设置我想要的窗格中的内容时,这非常有用。但是,一旦我单击了一个菜单项,该菜单项就不再重新填充中间的窗格。下面是我设置的活动函数;

public void setActive()
{
    panelShowLocation.setAllMenuItemsAsInActive();
    active = true;
    setBackground(color_panelHover);
    menuText.setForeground(color_textHover);
    panelShowLocation.add(content, BorderLayout.CENTER);
    //content.setVisible(true);
    panelShowLocation.revalidate();
}

【问题讨论】:

    标签: java swing layout-manager border-layout


    【解决方案1】:
    panelShowLocation.add(content, BorderLayout.CENTER);
    panelShowLocation.revalidate();
    

    当您将组件添加到面板时,现有组件不会被删除。

    Swing 绘制逻辑绘制最先添加的最后一个组件。因此,新添加的组件被绘制,但旧组件被绘制在新添加的组件之上

    所以你需要这样的逻辑:

    panel.remove( theOldPanel );
    panel.add(theNewPanel, BorderLayout.CENTER)
    panel.revalidate();
    panel.repaint();
    

    另一个选项是使用CardLayout。 CardLayout 允许您将多个组件添加到同一个面板。只有一个组件是同时可见的。阅读 How to Use CardLayout 上的 Swing 教程部分,了解更多信息和工作示例。

    【讨论】:

    • 谢谢哥们。根据你的回答让它工作。
    猜你喜欢
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-10
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多