我的代码在这里。我想要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){}
}
先谢谢。
答案 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方法以及相应循环变量的高度宽度来为帧添加动画。