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();
}
}