0

最初にGUI(gui1)があります。ボタンを押すと、別のGUI(gui2)が作成されます。私の質問は、gui1のメソッドを使用して、gui2の要素にアクセスするにはどうすればよいですか?

例:gui1のボタンを押す と、gui1のQuesHandText.setText(myVector[0]); QuesHandTextaJTextFieldとgui2myVector[0]のvarになります。結果のエラーメッセージ:スレッド「AWT-EventQueue-0」の例外java.lang.NullPointerException

Gui2から[OK]を押すと、Gui1のJTextFieldにTextを設定したい 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

のコンストラクタが2つありGuiます。

public Gui()

public Gui(String t)

最初のもので初期化QuesHandTextしましたが、2番目のものでは初期化していません。

2番目のものを使用して初期化する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

  • または宣言JButtonしてJTextField正しく

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

3.拡張JFrameしないでローカル変数として作成する

ActionPerformed4.使用から新しいGUIを再作成しないでくださいCardLayout

于 2012-07-13T10:54:04.803 に答える