[英]How can I use Button to Close Frame and Open New Frame?
那是我的代码在这里。 我想要java.awt.Button
和java.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){}
}
提前致谢。
您只是使事情复杂化。 无需扩展框架和实现这些接口,只需扩展JFrame。
public class TestGUI extends JFrame{...}
在您的TestGUI框架中,创建另一个JFrame,例如otherFrame,并创建两个botton,分别表示“打开和关闭”,然后将ActionListener绑定到它们。
openBtn.addActionListener(new ActionListener(){
otherFrame.setVisible(true);
});
closeBtn.addActionListener(new ActionListener(){
otherFrame.setVisible(false);
});
setVisible()方法接受布尔值,这是您实际需要的。 更简单,更干净的代码。
对于您来说,使用JFrame
而不是Frame
可能更有意义(我建议您在此处阅读Kumar Vivek Mitra的答案,以更好地了解原因)。 如果使用JFrame,则在关闭窗口时需要调用yourJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
来停止程序。
要响应您的按钮单击,只需将匿名类传递给您的按钮addOnClickListener()
方法,如下所示:
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//Do stuff here
}
});
然后,您应该可以删除现有的actionPerformed()方法。
要打开一个新框架并关闭现有框架,您应该创建两个JFrame对象,而不是扩展Frame(或JFrame)。 然后,当您要打开第二个框架时,只需调用secondFrame.setVisable(true)
,并使用firstFrame.dispose
关闭第一个firstFrame.dispose
。 但是,我先来看一下JDialogs和JOptionPanes ,看看它们是否可能对您更好。
完成所有这些之后,您应该可以删除所有WindowListener
内容,因为那是稍有不同的内容。 (如果您有兴趣,请在这里看看)
最后,不要忘记在lbl1标签之后添加分号。 ;)
祝好运!
您可以使用ActionListener接口。 但是,除了上述几点,其他人发表了评论。 您可以通过在循环内添加for循环和setSize方法以及相应循环变量的高度宽度,来向帧中添加动画。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.