以下有三个类:
RF_Button_Listener.class 是按钮监听
RF_Number.class 是一组 组件
RF_Index.class 是主类运行后 我点击按钮会生一个组 组件。问题是我如何分别给这些组件中的JTextField设置值。
RF_Button_Listener.class 是按钮监听
RF_Number.class 是一组 组件
RF_Index.class 是主类运行后 我点击按钮会生一个组 组件。问题是我如何分别给这些组件中的JTextField设置值。
import java.awt.event.ActionListener;import javax.swing.JButton;public class RF_Button_Listener {
private JButton index_add;
private JButton index_set;
private JButton index_close; public RF_Button_Listener() {
this.index_add = RF_Index.add_button;
this.index_set = RF_Index.set_button;
this.index_close = RF_Index.close_button;
addListener();
} public void addListener() {
index_add.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
RF_Number.rf_num = new RF_Number("" + RF_Number.i);
RF_Index.main_panel.add(RF_Number.rf_num);
if (RF_Index.main_panel.getComponentCount() > 1) {
index_set.setEnabled(true);
}
RF_Index.rf_index.validate();
RF_Index.rf_index.repaint();
}
}); index_set.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
//分别设置组件的JTextField
RF_Index.rf_index.validate();
RF_Index.rf_index.repaint();
}
});
index_close.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
System.exit(-1);
}
});
}
}
import javax.swing.JPanel;
import javax.swing.JTextField;public class RF_Number extends JPanel {
public static RF_Number rf_num;
private JLabel sensor_num;
private JLabel num;
private JLabel version_num;
private static JTextField text1;
private static JTextField text2;
public static int i = 1; public RF_Number(String Number) {
sensor_num = new JLabel(Number + "号传感器 ");
num = new JLabel("序号:");
version_num = new JLabel("版本号:");
text1 = new JTextField(8);
text2 = new JTextField(8);
i++;
add(sensor_num);
add(num);
add(text1);
add(version_num);
add(text2);
} public static JTextField getText1() {
return text1;
} public static void setText1(String text1) {
RF_Number.text1.setText(text1);
} public static JTextField getText2() {
return text2;
} public static void setText2(String text2) {
RF_Number.text2.setText(text2);
}}
import java.awt.Dimension;
import java.awt.Toolkit;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;public class RF_Index extends JFrame {
public static RF_Index rf_index;
public static JButton add_button;
public static JButton set_button;
public static JPanel main_panel;
private JPanel button_panel;
public static JButton close_button;
private String close = "关闭";
private String add = "添加";
private String del = "设置参数"; private RF_Index() {
setLayout(new BorderLayout());
setSize(330, 300);
Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
setLocation((int) (size.getWidth() - this.getWidth()) / 2, 50); main_panel = new JPanel();
RF_Number.rf_num = new RF_Number("" + RF_Number.i);
main_panel.add(RF_Number.rf_num);
add(main_panel, BorderLayout.CENTER); button_panel = new JPanel();
set_button = new JButton(del);
add_button = new JButton(add);
set_button.setEnabled(false);
close_button = new JButton(close); button_panel.add(add_button);
button_panel.add(set_button);
button_panel.add(close_button);
new RF_Button_Listener();
add(button_panel, BorderLayout.SOUTH);
} public static void main(String[] args) {
rf_index = new RF_Index();
rf_index.setVisible(true);
rf_index.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }}
可能你的List里面add的时候是在for外面new的,试着把new放到for里面去
我代码里面是,点击一下按钮生成一组控件,然后放到LIST中去,
我遍历出来给 JTextField.setText("X");
但最后“X”值显示在最后创建的一个组件里面。
我点击一下按钮创建 JButton jb = new JButton();
然后把 list.add(jb);
最后Iterator出来,给创建的jb.setText("X");
达到了我要的效果!为什么点一下按钮创建 RF_Number.rf_num = new RF_Number();这个对象,最后遍历出来就不可给每个创建的对象设置参数呢?