2016-11-04 5 views
0

これは私のコードです。答えはjava.awt.Buttonjava.awt.Frameです。ボタンを使ってフレームを閉じ、新しいフレームを開くにはどうしたらいいですか?

誰でも私を助けることができますか?

import java.awt.*; 
import java.awt.event.*; 

public class TestGUI extends Frame implements ActionListener, WindowListener{ 

    private Label lbl; 
    private Label lbl1 
    private Label lbl2; 
    private Label lbl3; 
    private TextField tf; 
    private TextField tf1; 
    private TextField tf2; 
    private Button btn; 
    private Button btn1; 
    private Frame frame; 

    public TestGUI() { 
     setLayout(new FlowLayout()); 

     lbl = new Label("Hi Guys! That's My First GUI Program and is made by me too"); 
     add(lbl); 

     lbl1 = new Label("Enter Your Name Please ~"); 
     add(lbl1); 

     tf1 = new TextField(30); 
     tf1.setEditable(true); 
     add(tf1); 

     lbl2 = new Label("Enter Your Age Please ~"); 
     add(lbl2); 

     tf2 = new TextField(30); 
     tf2.setEditable(true); 
     add(tf2); 

     lbl3 = new Label("Enter Your School/College Name Please ~"); 
     add(lbl3); 

     tf = new TextField(28); 
     tf.setEditable(true); 
     add(tf); 

     btn = new Button("Cancel"); 
     add(btn); 

     btn.addActionListener(this); 

     addWindowListener(this); 

     setTitle("My own GUI"); 
     setSize(500, 300); 

     setVisible(true); 
    } 

    public static void main(String[] args){ 
     TestGUI app = new TestGUI(); 
    } 

    @Override 
    public void actionPerformed(ActionEvent evt){ 

    } 

    @Override 
    public void windowClosing(WindowEvent evt){ 
     System.exit(0); 
    } 

    @Override public void windowDeactivated(WindowEvent evt){} 

    @Override public void windowActivated(WindowEvent evt){} 

    @Override public void windowOpened(WindowEvent evt){} 

    @Override public void windowClosed(WindowEvent evt){} 

    @Override public void windowIconified(WindowEvent evt){} 

    @Override public void windowDeiconified(WindowEvent evt){} 
} 

ありがとうございました。

+0

削除された無駄なフレーズ –

答えて

0

あなたは物事を複雑にしています。これらのインターフェイスを実装するフレーム&を拡張する代わりに、JFrameを拡張するだけです。あなたのTestGUIフレームで

public class TestGUI extends JFrame{...} 

別のJFrameを作成するには、otherFrameを言うとオープン&閉じるを言うし、それらにActionListenerを結合する2つのbottonsを作成します。

openBtn.addActionListener(new ActionListener(){ 
    otherFrame.setVisible(true); 
}); 

closeBtn.addActionListener(new ActionListener(){ 
    otherFrame.setVisible(false); 
}); 

のsetVisible()メソッドは、これはあなたが実際に必要とするものであるブール&を受け入れます。 もっと簡単に&クリーナーコード。

0

Frameの代わりにJFrameを使用するのが理にかなっているかもしれません(私はあなたに理由をよりよく知るために、Kumar Vivek Mitraの答えhereを読むことをお勧めします)。 JFrameを使用する場合は、ウィンドウを閉じるときにプログラムを停止するには、に電話する必要があります。

btn.addActionListener(new ActionListener() { 

        @Override 
        public void actionPerformed(ActionEvent e) { 

         //Do stuff here 

        } 

       }); 

次に、あなたがあなたの既存のactionPerformed()メソッドを削除することができるはずです:単にこのように、あなたのボタンにaddOnClickListener()方法をAnonymous Classesを渡し、あなたのボタンのクリックに応答する

新しいフレームを開いて既存のフレームを閉じるには、Frame(またはJFrame)を拡張するのではなく、2つのJFrameオブジェクトを作成する必要があります。次に、2番目のフレームを開く場合は、secondFrame.setVisable(true)に電話し、最初のフレームをfirstFrame.disposeで閉じます。しかし、私は最初にJDialogs and JOptionPanesを見て、彼らがあなたのためにうまくいくかどうかを見てみましょう。

結局のところ、少し異なるため、WindowListenerのものをすべて削除する必要があります。 here興味があればhere

最後に、lbl1ラベルの後ろにセミコロンを付けることを忘れないでください。 ;)

幸運!

0

ActionListenerインターフェイスを使用できます。 しかし、上記の人たちに少し追加してコメントしました。ループ内にforループとsetSizeメソッドを追加し、対応するループの変数の高さの幅を追加することで、フレームにアニメーションを追加できます。

関連する問題