现象:当点击‘确定’按钮时,9秒钟内界面的任何功能等都无法进行,甚至关闭窗口
原则:任何事件处理,都必须尽快完成
附:如果某个事件处理大于0.3秒,就会有卡顿之感
code:
package my;
import java.awt.FlowLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class MyFrame extends JFrame
{
public MyFrame(String title)
{
super(title);
//面板
JPanel root=new JPanel();
this.setContentPane(root);
root.setLayout(new FlowLayout());
JTextField textField=new JTextField(10);
JButton button=new JButton("确定");
root.add(textField);
root.add(button);
button.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
onButton();
}
});
}
private void onButton()
{
try
{
System.out.println("我");
Thread.sleep(1000*2);
System.out.println("爱");
Thread.sleep(1000*2);
System.out.println("你");
Thread.sleep(1000*2);
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package my;
import java.awt.Container;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class MyDemo
{
private static void createGUI()
{
// JFrame指一个窗口,构造方法的参数为窗口标题
JFrame frame = new MyFrame("Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 设置窗口的其他参数,如窗口大小
frame.setSize(500, 300);
// 显示窗口
frame.setVisible(true);
}
public static void main(String[] args)
{
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run()
{
createGUI();
}
});
}
}
解决办法:
创建工作线程:
https://blog.csdn.net/gjs935219/article/details/98494516
-《Java学习指南系列》