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这样的呢?
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这样的呢?
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();
}
});
}
});
}
}