首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

Swing弹出窗口后怎么使当前窗口(包括windows和java生成的)不丢失焦点

2012-03-19 
Swing弹出窗口后如何使当前窗口(包括windows和java生成的)不丢失焦点Swing弹出窗口后如何使当前窗口(包括w

Swing弹出窗口后如何使当前窗口(包括windows和java生成的)不丢失焦点
Swing弹出窗口后如何使当前窗口(包括windows和java生成的)不丢失焦点

Java code
import java.awt.Window;import java.awt.event.WindowEvent;import java.awt.event.WindowListener;import javax.swing.JDialog;import javax.swing.JFrame;public class Test extends JDialog implements Runnable{    public Test(){            }    @Override    public void run() {        // TODO Auto-generated method stub        this.setTitle("测试");        this.setVisible(true);    }            public static void main(String[] args){        int i=0;        while (i<5) {            Thread thread = new Thread(new Test());            thread.start();            i++;        }    }}

执行后当前主窗口和系统窗口都会失去焦点,而像QQ的右下角弹出消息就不会丢失焦点,如何改成像QQ这样的呢?

[解决办法]
Java code
import java.awt.Color;import java.awt.Dimension;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import javax.swing.JFrame;import javax.swing.JWindow;import javax.swing.Timer;public class JRocks {    public static void main(final java.lang.String[] args) throws Exception {        java.awt.EventQueue.invokeLater(new java.lang.Runnable(){                @Override public void run(){                    final JFrame frame = new JFrame("JRocks");                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);                    frame.setPreferredSize(new Dimension(600,400));                    frame.pack();                    frame.setVisible(true);                    final JWindow window = new JWindow();                    window.setPreferredSize(new Dimension(300,200));                    window.setBackground(new Color(128,128,128,1));                    window.pack();                    window.setLocation(800,50);                    final Timer timer = new Timer(5000,new ActionListener(){                            @Override public void actionPerformed(ActionEvent e){                                window.setVisible(!window.isShowing());                            }                        });                    frame.addWindowListener(new WindowAdapter(){                            @Override public void windowOpened(WindowEvent e){                                timer.start();                            }                            @Override public void windowClosing(WindowEvent e){                                timer.stop();                                window.dispose();                            }                        });                }            });    }} 

热点排行