package com.swing; import java.awt.event.WindowEvent; import java.awt.event.WindowFocusListener; import javax.swing.JFrame; public class TestJFrame extends JFrame{ public TestJFrame(){ init(); } public void init(){ this.setSize(400,300); this.setTitle("第一个JFrame窗体"); //this.setIconImage(image); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//这里是简单的处理了用户点击关闭的事件, //如果想复杂的处理话就要使用事件处理机制 this.setResizable(false);//不能改变窗体大小 this.setVisible(true); this.addWindowFocusListener(new MyFocus()); //注册一个窗体焦点的监听器 } public static void main(String[] args) { new TestJFrame(); } /*窗体三种事件: * * 1. 焦点失去 * 2. 开/关窗体 * 3. 窗体状态,比如最大,最小,调整大小 * * 事件处理要用监听器来进行处理,监听器可以有四种写法 * 1. 内置监听器(内部类的方式) ------------------二选 * 2. 自己监听自己,查看 TestJFrame1.java * 3. 外置监听器(外部类)TestJFrame2.java和MyFocus1.java * 4. 匿名类的使用(最麻烦的)TTestJFrame3.java ------------------首选 * * 使用监听器可以发现监听器都是接口,实现其要实现多个方法,代码量大,代码不简洁 * 所以可以使用适配器来解决监听器的问题,适配器其实就是空实现了三个接口的类 * WindowAdatper TestJFrame5.java * * */ //内部类,用处理于窗体焦点的监听器 public class MyFocus implements WindowFocusListener{ @Override public void windowGainedFocus(WindowEvent e) { // TODO Auto-generated method stub System.out.println("游戏正在进行....."); } @Override public void windowLostFocus(WindowEvent e) { // TODO Auto-generated method stub System.out.println("游戏暂停....."); } } }
package com.swing; /* * * * 该类用于演示,自已监听自己 * * * */ import java.awt.event.WindowEvent; import java.awt.event.WindowFocusListener; import java.awt.event.WindowListener; import javax.swing.JFrame; public class TestJFrame3 extends JFrame{ public TestJFrame3(){ init(); } public void init(){ this.setSize(400,300); this.setTitle("第一个JFrame窗体"); //this.setIconImage(image); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//这里是简单的处理了用户点击关闭的事件, //如果想复杂的处理话就要使用事件处理机制 this.setResizable(false);//不能改变窗体大小 this.setVisible(true); this.addWindowFocusListener( new WindowFocusListener(){ @Override public void windowGainedFocus(WindowEvent e) { // TODO Auto-generated method stub System.out.println("游戏正在进行....."); } @Override public void windowLostFocus(WindowEvent e) { // TODO Auto-generated method stub System.out.println("游戏暂停....."); } } ); //注册一个窗体焦点的监听器 } public static void main(String[] args) { new TestJFrame3(); } }
package com.swing; import java.awt.event.WindowEvent; import java.awt.event.WindowFocusListener; import java.awt.event.WindowListener; import javax.swing.JFrame; import javax.swing.JOptionPane; public class TestJFrame4 extends JFrame{ public TestJFrame4(){ init(); } public void init(){ this.setSize(400,300); this.setTitle("第一个JFrame窗体"); //this.setIconImage(image); this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);//这里是简单的处理了用户点击关闭的事件, //如果想复杂的处理话就要使用事件处理机制 this.setResizable(false);//不能改变窗体大小 this.setVisible(true); this.addWindowListener(new MyListener()); } public static void main(String[] args) { new TestJFrame4(); } public class MyListener implements WindowListener{ @Override public void windowActivated(WindowEvent e) { // TODO Auto-generated method stub } @Override public void windowClosed(WindowEvent e) { // TODO Auto-generated method stub } @Override public void windowClosing(WindowEvent e) { // TODO Auto-generated method stub //System.out.println("试图关闭时调用,this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);一起使用"); //JOptionPane.showMessageDialog(null, "你要关闭窗体了", "警告", JOptionPane.WARNING_MESSAGE ); int i = JOptionPane.showConfirmDialog(null, "你没有保存", "choose one", JOptionPane.YES_NO_CANCEL_OPTION); if(i==1){ JOptionPane.showMessageDialog(null, "你点了否", "警告", JOptionPane.WARNING_MESSAGE ); return; } if(i==2){ JOptionPane.showMessageDialog(null, "你点了取消", "警告", JOptionPane.WARNING_MESSAGE ); return; } if(i==0){ JOptionPane.showMessageDialog(null, "你点了是", "警告", JOptionPane.WARNING_MESSAGE ); System.exit(0); } } @Override public void windowDeactivated(WindowEvent e) { // TODO Auto-generated method stub } @Override public void windowDeiconified(WindowEvent e) { // TODO Auto-generated method stub } @Override public void windowIconified(WindowEvent e) { // TODO Auto-generated method stub } @Override public void windowOpened(WindowEvent e) { // TODO Auto-generated method stub } } }
package com.swing; import java.awt.Color; import java.awt.Container; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowFocusListener; import javax.swing.JFrame; public class TestJFrame5 extends JFrame{ public TestJFrame5(){ init(); } public void init(){ this.setSize(400,300); this.setTitle("第一个JFrame窗体"); //this.setIconImage(image); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//这里是简单的处理了用户点击关闭的事件, //如果想复杂的处理话就要使用事件处理机制 //this.setResizable(false);//不能改变窗体大小 //得到内容面板,相当画板上的纸 Container contatiner = this.getContentPane(); contatiner.setBackground(Color.BLUE); this.setVisible(true); this.addWindowListener(new WindowAdapter(){ @Override public void windowClosing(WindowEvent e) { // TODO Auto-generated method stub //super.windowClosing(e); System.out.println("adfsafsafafasf"); } @Override public void windowStateChanged(WindowEvent e) { // TODO Auto-generated method stub //super.windowStateChanged(e); System.out.println("adfsafsafafasf"); } @Override public void windowOpened(WindowEvent e) { // TODO Auto-generated method stub System.out.println("ddddddddddddddddd"); } @Override public void windowLostFocus(WindowEvent e) { // TODO Auto-generated method stub System.out.println("dddddddddaaaaaaaaaaaaaaadddddddd"); } @Override public void windowActivated(WindowEvent e) { // TODO Auto-generated method stub System.out.println("dddddddddaaaaaaaaaaaaaaadddddddd"); } }); } public static void main(String[] args) { new TestJFrame5(); } }