Swing弹出窗口后如何使当前窗口(包括windows和java生成的)不丢失焦点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这样的呢?

解决方案 »

  1.   

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

  2.   

    晕。JWindow 显示/隐藏没有影响我输入发贴。我用的是ubuntu/jdk7。
      

  3.   

    找到方法了,在初始化面板的时候加上this.setFocusableWindowState(false);this.setFocusable(false); 另外很重要的一点就是this.setVisible(true);一定要放到最后