如何使用Button关闭框架并打开新框架?

时间:2016-11-04 05:34:09

标签: java

我的代码在这里。我想要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){}
}

先谢谢。

3 个答案:

答案 0 :(得分:0)

你只是让事情复杂化。而不是延伸框架和实现这些接口,只需扩展JFrame。

public class TestGUI extends JFrame{...}

在你的TestGUI框架中创建另一个JFrame,说是otherFrame并创建两个Bottons,比如Open&关闭然后将ActionListener绑定到它们。

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

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

setVisible()方法接受boolean&这是你真正需要的。 更简单和更简单清洁代码。

答案 1 :(得分:0)

使用JFrame代替Frame可能更有意义(我建议您阅读Kumar Vivek Mitra的回答here以更好地了解原因)。 如果您使用JFrame,则需要在关闭窗口时调用yourJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)来停止程序。

要回复按钮点击次数,只需将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标签后添加分号。 ;)

祝你好运!

答案 2 :(得分:0)

您可以使用ActionListener接口。 然而,对于上述人员的一点补充评论。您可以通过在循环中添加for循环和setSize方法以及相应循环变量的高度宽度来为帧添加动画。

相关问题