0

首先我有一个 GUI (gui1),当我按下一个按钮时,会创建一个不同的 GUI (gui2)。我的问题是:如何使用 gui1 中的方法访问 gui2 中的元素?

示例:当我按下 gui1 中的按钮时,我想要的 QuesHandText.setText(myVector[0]); QuesHandText是 gui1 中的一个JTextField和 gui2中myVector[0]的一个 var。结果错误消息:线程“AWT-EventQueue-0”中的异常 java.lang.NullPointerException

当我从 Gui2 按 Ok 时,我想为 Gui1 上的 JTextField 设置文本 http://img72.imageshack.us/img72/2822/36185233.png

  //imports
  public class Gui extends JFrame{

  public JButton Simulate, Particular, Start, HandSelection;
  public JTextField QuesHandText, FlopTurnRiverText, RezultatText; 
  public Gui g;

  public Gui()
    {
      QuesHandText = new JTextField(4);
      //instruct
      ClassParticular handler1 = new ClassParticular();
      Particular.addActionListener(handler1);
    }

  public Gui(String t)
    {

      //instruct
      myVector[0]="some_string";
      myVector[1]="some_string2";
    }

  public class ClassParticular implements ActionListener{

    public void actionPerformed(ActionEvent event){


        //instruc

        HandSelection hs = new HandSelection();
        HandSelection.addActionListener(hs);

        StartClass hndlr = new StartClass();
        Start.addActionListener(hndlr);
        add(HandSelection);
        add(Start);

    }
}

   public class HandSelection implements ActionListener{
    public void actionPerformed(ActionEvent e){
        g = new Gui("Hand selection");
        g.setVisible(true);
        g.setSize(1135,535);
        g.setDefaultCloseOperation(HIDE_ON_CLOSE);
        g.setResizable(false);


    }
}

   public class StartClass implements ActionListener{
    public void actionPerformed(ActionEvent event){

        QuesHandText.setText(myVector[0]); // THE PROBLEM IS HERE, I KNOW IT !!

    }
}

}

4

2 回答 2

3

您有两个Gui.

public Gui()

public Gui(String t)

您已经在第一个中初始化QuesHandText,但在第二个中没有。

如果你使用第二个来初始化Gui你应该得到一个NullPointerException.

我认为你应该在构造函数中这样做:

[按照 Kleopetra 的建议编辑]

public Gui(){
   this("");
}

public Gui(String t){
   //instruct (I am not sure what it means)

   quesHandText = new JTextField(4);
   classParticular handler1 = new ClassParticular();
   particular.addActionListener(handler1);

   myVector = new String[2]; // or some other size you need.
   myVector[0]="some_string";
   myVector[1]="some_string2";
}
于 2012-07-13T11:05:55.053 回答
3

1.你的问题是

public class Gui extends Jframe{

那应该是

public class Gui extends JFrame{

2.另一个问题是

public JButton Simulate, Particular, Start, HandSelection;
public JTextField QuesHandText, FlopTurnRiverText, RezultatText; 
public Gui g;
  • 删除JButton并且JTextField因为它们是JComponents and API名称

  • 或声明JButtonJTextField正确

.

public JButton myButton, ...
public JTextField myTextField, ...

3.不要扩展JFrame创建为局部变量

4.don't re_create a new GUI from ActionPerformeduseCardLayout

于 2012-07-13T10:54:04.803 回答