gpt4 book ai didi

java - 如何读取 JTabbedPane 中面板的组件并将结果添加到组件中

转载 作者:太空宇宙 更新时间:2023-11-04 14:52:51 26 4
gpt4 key购买 nike

我有一个 Swing GUI 应用程序,其中包含 JTabbedPane 和多个面板。它大约有 9 个 Jpanels,在第 1 个 JPanel 中有 5 个 JPanel,这些 Jpanels 包含一些 swing 组件。我已经设置了这些面板的名称。

我的问题是:我能够在第一个选项卡面板中读取这些组件,但问题是无法获取面板的名称并进一步继续。

代码如下:

1.、示例类:

import java.awt.Component;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JPanel;

public class Sample {

public Sample() {}

public List<Component> getComponents(int id , Object obj) {
List<Component> result = new ArrayList<Component>();
if (id == 1 && obj instanceof ExampleTab1) {
Component[] component =((ExampleTab1)obj).getContentPanel().getComponents();
for (Component comp : component) {
if (comp instanceof JPanel) {
String compName = ((JPanel)comp).getName().toString();
if (compName.equals("panelResult")) {
//do the stuff
}
}
}
}
return result;
}
}

2.、ExampleTab1类:

import javax.swing.JPanel;

public class ExampleTab1 {
public ExampleTab1() { }
public JPanel getContentPanel() {
JPanel contentPane = new JPanel();
//all the components added to the panel
return contentPane;
}
}

最佳答案

如果您想获取容器中的所有元素(例如 JPanel 或 JTabbedPane 等...),您需要手动收集它们,因为 getComponents() 仅读取容器的直接子元素。

您需要将以下函数添加到 Sample 类中:

public List<Component> getAllComponents(Container container) {
Component[] components = container.getComponents();
List <Component> result = new ArrayList<Component>();
for (Component component : components) {
result.add(component);
if (component instanceof Container) {
result.addAll(getAllComponents((Container) component));
}
}
return result;
}

您需要替换以下代码:

Component[] component =((ExampleTab1)obj).getContentPanel().getComponents();
使用此代码:
List<Component> components = getAllComponents(((ExampleTab1)obj).getContentPanel());
如果您有没有名称的组件,请不要忘记 getName() 函数的 null 检查。

关于java - 如何读取 JTabbedPane 中面板的组件并将结果添加到组件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23557733/

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