2016-11-04 80 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方法以及相应的循环变量的高度宽度来为您的框架添加动画。