java中实现退出按钮功能的实现以及几种布局方式的简述------三种方法
今天看了布局管理器,写了如下代码:
import java.awt.*;
import java.awt.event.*;
class myFrame {
public static void main(String args[]){
Frame f=new Frame("my first");
Button btn1=new Button("north");//定义一个Button组件
Button btn2=new Button("south");//定义一个Button组件
Button btn3=new Button("west");//定义一个Button组件
Button btn4=new Button("east");//定义一个Button组件
Button btn5=new Button("Center");//定义一个Button组件
f.setSize(600,400);//设定窗口大小
f.setLocation(100, 100);//默认为(0,0),用于设定窗口开始是离左上角距离
f.setBackground(Color.green);//设定颜色,这个方法内部是一个color类
f.setForeground(Color.black);//设定字体颜色
f.setLayout(new BorderLayout());//构造一个组件之间没有间距的新边界布局。
//f.setLayout(new BorderLayout(20,10));//构造一个组件之间间距为水平为20,垂直为10的新边界布局。
//f.setLayout(new FlowLayout(FlowLayout.CENTER,5,50));//流式布局管理器, 构造一个新的 FlowLayout,居中对齐,默认的水平和垂直间隙是 5 个单位。
//f.setLayout(new GridLayout(3,2,10,30));
//f.setLayout(new CardLayout(100,10));
f.add(btn1,BorderLayout.NORTH);//把button放在north边
//f.add(btn1);
f.add(btn2,BorderLayout.SOUTH);
f.add(btn3,BorderLayout.WEST);
f.add(btn4,BorderLayout.EAST);
f.add(btn5,BorderLayout.CENTER);
}
当我点击退出按钮是发现没有反应,不知道大家是否也遇到过这种情况。实际上我们可以用一下三种方法解决:
方法一:定义一个MyWindowListener类,实现接口WindowListener,因为WindowListener类是抽象的,所以他的所有方法都要实现
class MyWindowListener implements WindowListener//实现接口中所有的方法哦
{
public void windowOpened(WindowEvent e)
{
}
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
public void windowClosed(WindowEvent e)//用于点击关闭后进行的操作
{
}
public void windowIconified(WindowEvent e)
{
}
public void windowDeiconified(WindowEvent e)
{
}
public void windowActivated(WindowEvent e)
{
}
public void windowDeactivated(WindowEvent e)
{
}
}
写好后,我们只要在原代码中添加代码:f.addWindowListener(new MyWindowListener());就可以了
方法二:这个方法需要用到适配器WindowAdapter,我们先定义一个HisWindowListener,定义如下:
class HisWindowListener extends WindowAdapter{
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
然后我们只要在原代码中添加代码:f.addWindowListener(new HisWindowListener());就可以了
方法三:其实这个方法和方法二类似,只是我们不用创建一个类,而是直接在原代码中添加代码:
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});就可以了,因为WindowAdapter()是抽象类,所以我们必须实现它
最后为了大家更好的理解,我把上面的所有整合到下述代码:
import java.awt.*;
import java.awt.event.*;
class myFrame {
public static void main(String args[]){
Frame f=new Frame("my first");
Button btn1=new Button("north");//定义一个Button组件
Button btn2=new Button("south");//定义一个Button组件
Button btn3=new Button("west");//定义一个Button组件
Button btn4=new Button("east");//定义一个Button组件
Button btn5=new Button("Center");//定义一个Button组件
f.setSize(600,400);//设定窗口大小
f.setLocation(100, 100);//默认为(0,0),用于设定窗口开始是离左上角距离
f.setBackground(Color.green);//设定颜色,这个方法内部是一个color类
f.setForeground(Color.black);//设定字体颜色
f.setLayout(new BorderLayout());//构造一个组件之间没有间距的新边界布局。
//f.setLayout(new BorderLayout(20,10));//构造一个组件之间间距为水平为20,垂直为10的新边界布局。
//f.setLayout(new FlowLayout(FlowLayout.CENTER,5,50));//流式布局管理器, 构造一个新的 FlowLayout,居中对齐,默认的水平和垂直间隙是 5 个单位。
//f.setLayout(new GridLayout(3,2,10,30));
//f.setLayout(new CardLayout(100,10));
f.add(btn1,BorderLayout.NORTH);//把button放在north边
//f.add(btn1);
f.add(btn2,BorderLayout.SOUTH);
f.add(btn3,BorderLayout.WEST);
f.add(btn4,BorderLayout.EAST);
f.add(btn5,BorderLayout.CENTER);
//f.addWindowListener(new MyWindowListener());
f.addWindowListener(new HisWindowListener());
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
f.setVisible(true);//用于显示窗口,如果参数改为false就不显示
}
}
class MyWindowListener implements WindowListener//实现接口中所有的方法哦
{
public void windowOpened(WindowEvent e)
{
}
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
public void windowClosed(WindowEvent e)//用于点击关闭后进行的操作
{
}
public void windowIconified(WindowEvent e)
{
}
public void windowDeiconified(WindowEvent e)
{
}
public void windowActivated(WindowEvent e)
{
}
public void windowDeactivated(WindowEvent e)
{
}
}
class HisWindowListener extends WindowAdapter{
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
有问题的地方欢迎留言,我也希望和大家多多交流