gpt4 book ai didi

java - 将 JPanel 与 GridBoxLayout 居中是重复添加 JPanel

转载 作者:行者123 更新时间:2023-12-02 05:35:17 24 4
gpt4 key购买 nike

经过大量研究后,我似乎找不到任何与我的问题相关的内容。我正在创建一个程序,用户可以在其中选择他们想要使用的选项卡(JTabbedPane)。在该选项卡中,我有一个 JPanel,当用户选择该选项卡时,我将其添加到该选项卡中。

private void tabEventsStateChanged(javax.swing.event.ChangeEvent evt) {                                       
if (tabEvents.getSelectedComponent().equals(tabAddEvent)) {
JPanel jp = new AddEvent();
tabAddEvent.setLayout(new GridBagLayout());
tabAddEvent.add(jp);
tabAddEvent.updateUI();
}
else if (tabEvents.getSelectedComponent().equals(tabEditEvent)) {
JPanel jp = new EditEvent();
tabEditEvent.setLayout(new GridBagLayout());
tabEditEvent.add(jp);
tabEditEvent.updateUI();
}
else if (tabEvents.getSelectedComponent().equals(tabDeleteEvent)) {
JPanel jp = new DeleteEvent();
tabDeleteEvent.setLayout(new GridBagLayout());
tabDeleteEvent.add(jp);
tabDeleteEvent.updateUI();
}
else {
System.out.println("Error! Tab Not Selected!");
}
}

JPanel 完美居中。然而,我很沮丧地发现,当我在 tabAddEvent 之后单击 tabEditEvent(或 tabDeleteEvent)然后返回 tabAddEvent 时,JPanel 会再次添加。这会创建一个奇怪的 UI,其中我有 2 个相同的表单并排放置并且不再位于中心... tabEditEvent 和 tabDeleteEvent 也是如此。如果我点击任何选项卡 3 次,我就会将 3 个 JPanel 添加到容器中,依此类推...

更新

这是我 friend 的程序的原始代码的一部分:

else if (tabEvents.getSelectedComponent().equals(tabEditEvent)) {
JPanel jp = new EditEvent();
tabEditEvent.setLayout(new BorderLayout());
tabEditEvent.add(jp, BorderLayout.CENTER);
tabEditEvent.updateUI();
}

更新2

为了解决这个问题,我对结果进行了屏幕截图,以便您可以看到我试图描述的内容。 https://www.dropbox.com/s/isj5iezwcak1bfn/Untitled-1.png
https://www.dropbox.com/s/rywe1e5hgx7c88x/Untitled-2.png

我尝试研究 CardLayout,不幸的是,我无法理解它

最佳答案

.

public void updateUI()
Resets the UI property with a value from the current look and feel.
Overrides:
updateUI in class JComponent
See Also:
JComponent.updateUI()
<小时/>
  1. 使用CardLayout而不是添加/删除 JComponents

  2. 在对已经可见的 Swing GUI 进行所有更改后,调用代码行 tabDeleteEvent.revalidate();tabDeleteEvent.repaint();您必须重复添加/删除JComponents

关于java - 将 JPanel 与 GridBoxLayout 居中是重复添加 JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25038446/

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