各位大哥大姐    小弟想请问下,我有一个Jpanel中有比如十个JtextField ,然后有一个联系方式这个Bean,Bean里有,id,name,title,address,tel,fax等属性,我想怎么自动让个这十个textField中的值,取出来值给这个bean,请大家给个思路,或者给个具体的代码,万分感谢.       我本来的想法是通过jpanel. getComponents(),获得一个所有组件的数组,然后使用循环比较 数组中的对象是不是jtextField.class这个类型,但是就卡在这里了,我不知道怎么样去把jtextField的值绑定到一个bean属性上,.

解决方案 »

  1.   

    你JPanel里面的道不能获取到十个JTextField难引用么,直接通过引用就行了啊
    把你现在的代码贴出来看看
      

  2.   

    你可以逐个取出来。逐个set到bean对象中去呀。
      

  3.   

    简单的一个实例,点击按钮之后,在控制台输出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(){}
    }
      

  4.   

                                 Component[] components = jPanel1.getComponents();
    for (Component component : components) {
    if (component.getClass() == JTextField.class) {
    System.out.println("++++++++");
    }
    }我有很多个窗口均有很多个jtextField 要是每个都去手动赋值不是太累了吗,每个类的引用变量名我是不知道的,我准备是通过反射去实现,正在找方法,还没有找到,那位高手提示下,用反射怎么去实现.
      

  5.   

    楼上的几位大哥说的都是手动赋值,就是要知道jtextfield的变量,然后调用jtextfield的set或者是get方法,但是现在我不知道jtextfield的变量名称
      

  6.   

    Component[] components = jPanel1.getComponents();
    for (Component component : components) {
    if (component.getClass() == JTextField.class) {
      //关键是这个地方,我需要怎么去把这个jtextField的值设置到bean属性中
      //比如此时jtextfield是一个叫做 textField1的对象,我需要绑定到bean中的id字段上需要怎么绑定

    }
    }
      

  7.   

    使用 jgoodies binding 进行 data binding
      

  8.   

    你不知道变量名称,那你告诉我们你知道什么十个JTextField ,你即便取出来这十个,那么你怎么判定哪个JTextArea是哪个属性的?如果这样,你这个问题没有任何解决办法希望你给出一些代码,代码就是最好的回答你能知道什么
      

  9.   

    http://jnb.ociweb.com/jnb/jnbJun2005.html