2016-11-04 136 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。

public class TestGUI extends JFrame{...} 

在你TestGUI幀創建另一個JFrame的說otherFrame並創建兩個bottons說打開&關閉,然後綁定的ActionListener給他們。

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

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

的調用setVisible()方法接受布爾&這就是你的實際需要。 更簡單&更乾淨的代碼。

0

使用JFrame而不是Frame(我建議您閱讀Kumar Vivek Mitra的回答here以更好地瞭解原因)可能更有意義。 如果您使用JFrame,當您關閉窗口時,您需要致電來停止您的程序。

要回覆按鈕點擊,只需通過Anonymous Classes您的按鈕addOnClickListener()方法,像這樣:

btn.addActionListener(new ActionListener() { 

        @Override 
        public void actionPerformed(ActionEvent e) { 

         //Do stuff here 

        } 

       }); 

那麼你應該能夠刪除現有的actionPerformed()方法。

要打開一個新框架並關閉現有框架,您應該創建兩個JFrame對象,而不是擴展Frame(或JFrame)。然後,當您想要打開第二幀時,請撥打secondFrame.setVisable(true),然後用firstFrame.dispose關閉第一幀。不過,我首先要看看JDialogs and JOptionPanes,看看它們是否可能對您更好。

畢竟,你應該能夠刪除所有你的WindowListener的東西,因爲這是略有不同的東西。 (如果你有興趣,看看here

最後,別忘了在你的lbl1標籤後面加分號。 ;)

祝你好運!

0

您可以使用ActionListener接口。 然而,除了上面的球員評論。您可以通過在循環內添加for循環和setSize方法以及相應的循環變量的高度寬度來爲您的框架添加動畫。

相關問題