从GUI创建对象 - Java

时间:2016-02-09 11:33:35

标签: java swing

我有这个简单的类Cat来描述猫的特征:

public class Cat {

  private String name;
  private String race;
  private String colour;
  private int age;

  public Cat(String name, String race, String colour, int age) {
    this.name=name;
    this.race=race;
    this.colour=colour;
    this.age=age;
  }      

  public String getRace() {
      return race;
  }
  public String getName() {
      return name;
  }
  public String getColour() {
      return colour;
  }
  public int getAge() {
      return age;
  }

}

我还有一个CatDemo类,它创建一个Frame类的实例(扩展JFrame),从中可以插入cat的信息:

public class CatDemo {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Frame f = new Frame();
        f.setVisible(true); 
    }

}

这是我的GUI:
enter image description here

当按下OK时,我必须创建Cat类的实例(我必须创建一个Cat对象,并在GUI的空白处插入功能)。 在actionPerformed方法中创建此实例很容易:

    public void actionPerformed(ActionEvent arg0) {
        Cat c = new Cat(textField.getText(),textField_1.getText(),
                        textField_2.getText(),Integer.parseInt(textField_3.getText())); 
    }

但现在我需要我的Cat对象来制作别的东西。如何使用c课程中的CatDemo(哪里有主要课程)?

2 个答案:

答案 0 :(得分:2)

您需要扩展Frame。

public class MyFrame extends Frame {
    public Cat buildCatFromInputFields() {
        ...
        return cat;
    }
}

另外,您需要了解的是,当您进入AWT世界(使用该帧)时,您将离开主线程。 我的意思是,在你调用 f.setVisible(true)之后,你的主方法和主线程结束了! 因此,完全可以在ActionHandler方法中使用cat(例如 actionPerformed())。

答案 1 :(得分:1)

你可以在你的主程序和你的框架中有一个猫的公共静态列表,当用户按下OK时,你可以做类似的事情

CatDemo.cats.Add(new Cat(name, race, color, age));