gpt4 book ai didi

java - 访问每个动态添加的 jComponent

转载 作者:行者123 更新时间:2023-11-30 03:26:05 26 4
gpt4 key购买 nike

在我已经提出问题并且可以使用此 answer for my question 从动态添加的 jTextFieldsjComboBoxes 中获取值之前.

现在在我的 subPanel 中,我有 3 个 jComboBoxes 和 4 个 jTextFields

要获取 jComponent 的值,我使用以下代码:

Component[] children = jPanel1.getComponents();
// iterate over all subPanels...
for (Component sp : children) {
if (sp instanceof subPanel) {
Component[] spChildren = ((subPanel)sp).getComponents();
// now iterate over all JTextFields...
for (Component spChild : spChildren) {
if (spChild instanceof JTextField) {
String text = ((JTextField)spChild).getText();
System.out.println(text);
}
}
}
}

我想问是否可以分别访问每个jComboBoxesjTextFields,即我可以操作每个jComponent并设置它们不同的值(value)观?我怎样才能实现这个目标?

提前谢谢您。

最佳答案

I would like to ask is it possible to access to each jComboBoxes and jTextFields separately, i.e. can I manipulate each jComponent and set them different values? How can I achieve this?

您可以保留对组件的引用,而不是遍历组件层次结构(这对于布局更改很脆弱)。以下示例是一个包含子组件实例变量的类:

public class ComponentWrapper extends JComponent{

private JComboBox combo;
private JTextArea textArea;

public ComponentWrapper(){
combo = new JComboBox();
textArea = new JTextArea();
add(combo);
add(textArea);
}

public Text getTextArea(){
return textArea;
}

public JComboBox getComboBox(){
return comboBox;
}
}

上面的类扩展了 JComponent,在构造函数中添加组件,并且可以添加到其他地方的另一个 Container 中。 请注意,上面的类只是如何执行此操作的示例,可能需要根据您的要求进行进一步调整。用法:

ComponentWrapper wrapper = new ComponentWrapper ();
add(wrapper);
revalidate();//if adding 'dynamically'

//later, when you want to get the text
String text = wrapper.getTextArea().getText();

关于java - 访问每个动态添加的 jComponent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30175947/

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