各位大哥大姐 小弟想请问下,我有一个Jpanel中有比如十个JtextField ,然后有一个联系方式这个Bean,Bean里有,id,name,title,address,tel,fax等属性,我想怎么自动让个这十个textField中的值,取出来值给这个bean,请大家给个思路,或者给个具体的代码,万分感谢. 我本来的想法是通过jpanel. getComponents(),获得一个所有组件的数组,然后使用循环比较 数组中的对象是不是jtextField.class这个类型,但是就卡在这里了,我不知道怎么样去把jtextField的值绑定到一个bean属性上,.
把你现在的代码贴出来看看
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;/**
* Created by IntelliJ IDEA.
* User: admin
* Date: 2011-9-27
* Time: 17:12:55
* To change this template use File | Settings | File Templates.
*/
public class BaseDemo1 extends JFrame { private JPanel propertyPanel;
private JLabel nameLbl;
private JTextField name;
private JLabel ageLbl;
private JTextField age; private JButton submit; public BaseDemo1(String title){
super(title);
Container c=this.getContentPane();
c.setLayout(new BorderLayout());
propertyPanel=new JPanel();
propertyPanel.setLayout(new GridLayout(2,2));
nameLbl=new JLabel("name");
name=new JTextField(20);
ageLbl=new JLabel("age");
age=new JTextField(20);
propertyPanel.add(nameLbl);
propertyPanel.add(name);
propertyPanel.add(ageLbl);
propertyPanel.add(age); c.add(propertyPanel,BorderLayout.CENTER);
submit=new JButton("submit"); submit.addActionListener(new ActionListener(){ @Override
public void actionPerformed(ActionEvent e) {
//To change body of implemented methods use File | Settings | File Templates.
Person p=new Person();
p.setName(name.getText().trim());
p.setAge(Integer.parseInt(age.getText()));
System.out.println(p);
}
});
c.add(submit,BorderLayout.SOUTH); this.pack();
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} public static void main(String[] args){
new BaseDemo1("demo");
}
}class Person{
String name; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} @Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} int age; public Person(){}
}
for (Component component : components) {
if (component.getClass() == JTextField.class) {
System.out.println("++++++++");
}
}我有很多个窗口均有很多个jtextField 要是每个都去手动赋值不是太累了吗,每个类的引用变量名我是不知道的,我准备是通过反射去实现,正在找方法,还没有找到,那位高手提示下,用反射怎么去实现.
for (Component component : components) {
if (component.getClass() == JTextField.class) {
//关键是这个地方,我需要怎么去把这个jtextField的值设置到bean属性中
//比如此时jtextfield是一个叫做 textField1的对象,我需要绑定到bean中的id字段上需要怎么绑定
}
}