WindowFocusListene
发表在Java视频课程答疑 2017-10-09
是否精华
版块置顶:

package Collection;


import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.EventQueue;

import java.awt.Font;

import java.awt.event.WindowEvent;

import java.awt.event.WindowFocusListener;


import javax.swing.*;

import javax.swing.border.EmptyBorder;


public class Windowfa extends JFrame{

     private JPanel contentPane;

     private JLabel lblTip;

     private JLabel lblTight;//声明窗体中的组件

     

     

public static void main(String[] args) {

 

EventQueue.invokeLater(new Runnable(){

public void run(){

try{

Windowfa frame = new Windowfa();

frame.setVisible(true);

}catch(Exception e){

e.printStackTrace();

}

}

});

}

public  Windowfa(){

setResizable(false);

setTitle("焦点事件监听");

setDefaultCloseOperation(EXIT_ON_CLOSE);

setBounds(100, 100, 200, 200);

contentPane=new JPanel();

contentPane.setBackground(Color.YELLOW);

contentPane.setLayout(new BorderLayout(0,0));

contentPane.setBorder(new EmptyBorder(5, 5, 5,5));

setContentPane(contentPane);

lblTip=new JLabel("JFabel 窗体获得焦点,灯亮了");

lblTip.setForeground(Color.cyan);

lblTip.setFont(new Font("微软雅黑",Font.PLAIN,14));

lblTip.setHorizontalAlignment(SwingConstants.CENTER);

contentPane.add(lblTip,BorderLayout.NORTH);

lblTight=new JLabel();

lblTight.setHorizontalAlignment(SwingConstants.CENTER);

lblTight.setIcon(new ImageIcon(Windowfa.class.getResource("dengliang.png")));

contentPane.add(lblTight,BorderLayout.SOUTH);

addWindowFocusListener(new WindowFocusListener() {

public void windowLostFocus(WindowEvent e) {

 

lblTight.setIcon(new ImageIcon(Windowfa.class.getResource("dengmie.png")));

lblTip.setText("JFabel 窗体失去焦点,灯灭了");

}

 

public void windowGainedFocus(WindowEvent e) {

lblTight.setIcon(new ImageIcon(Windowfa.class.getResource("dengliang.png")));

lblTip.setText("JFabel 窗体获得焦点,灯亮了");

}

});

}


}






1、问题:WindowFocusListene中为什么需要run()方法,起什么作用。又为什么需要try....catch 语句。

public static void main(String[] args) {

 

EventQueue.invokeLater(new Runnable(){

public void run(){

try{

Windowfa frame = new Windowfa();

frame.setVisible(true);

}catch(Exception e){

e.printStackTrace();

}

}

});

}




2、WindowFocusListene中 失去焦点后,需要由弹出窗口说明“程序暂停”等字样的窗体  老师求教。

分享到:
精彩评论 4
shuyanang
学分:23 LV2
2017-10-09
沙发

是否加上这句话 “JOptionPane.showMessageDialog(Windowfa.this, "程序暂停") ”  实现弹出窗口的功能

根号申
学分:4736 LV12
TA的每日心情
2021-07-16 23:48:46
2017-10-09
板凳

EventQueue.invokeLater(new Runnable(){

public void run(){

try{


.......


}catch(Exception e){

e.printStackTrace();

}

}

});


这是一种安全写法。虚拟机会给java程序的主方法分配一个线程,而这几行代码是将窗体从主线程中独立出来,避免因为窗体阻塞而导致整个主线程停滞。添加try-catch语句也是为了将异常处理从主线程中独立出现来。其实这几行代码删掉对本程序完全没有影响。

shuyanang
学分:23 LV2
2017-10-09
地板

根号申 发表于2017-10-09 15:50

EventQueue.invokeLater(new Runnable(){

public void run(){

try{


.......


}catch(Exception e){

e.printStackTrace();

}

}

});


这是一种安全写法。虚拟机会给java程序的主方法分配一个线程,而这几行代码是将窗体从主线程中独立出来,避免因为窗体阻塞而导致整个主线程停滞。添加try-catch语句也是为了将异常处理从主线程中独立出现来。其实这几行代码删掉对本程序完全没有影响。

申老师,关于第二个问题,我自己后面回复的这句语句正确么?

根号申
学分:4736 LV12
TA的每日心情
2021-07-16 23:48:46
2017-10-10
4L

shuyanang 发表于2017-10-09 21:44

申老师,关于第二个问题,我自己后面回复的这句语句正确么?

第二个问题我漏下了,你的办法是正确的。

首页上一页 1 下一页尾页 4 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照