【问题标题】:event dispatching thread事件分发线程
【发布时间】:2013-04-06 16:59:06
【问题描述】:

我试图在框架内制作一个简单的按钮,但按钮图标未正确显示我的问题是为什么? 2.) 还有为什么我们不能放 wingUtilities.invokeLater(new Runnable() {
public void run() { new SwingDemo(); } });
S 在 SwingDemo() 中,或 public void actionPerformed(ActionEvent ae) 3.) 哪个语句构成了 edt 线程? 请尽量用简单的语言解释,否则会产生更多的疑问。

import javax.swing.*;
import java.awt.event.*;
class SwingDemo implements ActionListener {
SwingDemo() {
    JFrame jfrm = new JFrame("A Simple Swing Application");
    jfrm.setSize(275, 100);
    jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JButton jlab = new JButton(" Button ");
    jfrm.add(jlab);
    jfrm.setVisible(true);
}
public static void main(String args[]) {
    SwingUtilities.invokeLater(new Runnable() {       //2
    public void run() {
    new SwingDemo();
    }
    });
}
    public void actionPerformed(ActionEvent ae) {
    //jlab.setText("You selected " + ae.getActionCommand());
    //showStatus("You selected " + ae.getActionCommand());

} }

【问题讨论】:

  • 按钮图标怎么显示不正常

标签: java


【解决方案1】:

它在应用程序的初始阶段调用SwingUtilities.invokeLater(...),以便在事件调度线程中创建 UI。它需要在调用构造函数或应用程序中的任何后续方法之前发生。创建的线程称为initial thread

【讨论】:

  • 没有。 SwingUtilities.invokeLater 安排在 EDT 上执行的 GUI 创建任务。只要您拨打invokeLaterinvokeWait 电话,您就不必担心EDT 的实际“创建”。这是由 Swing 自己管理的。
  • 对不起,我没听懂你的第一个回复,我的意思是稍后调用,调用和等待不能互换使用??
  • 是的,通常使用invokeLater
猜你喜欢
  • 2013-04-26
  • 1970-01-01
  • 1970-01-01
  • 2018-09-02
  • 2014-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多