Java Swing错误对话框。

3

我有一个对话框需要显示,但是它出现了编译错误。编译错误在最后一部分中给出。

import javax.swing.*;

class SwingDemo {
    SwingDemo() {
        JFrame jfrm = new JFrame("A Simple Swing Application");
        jfrm.setSize(275, 100);
        jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JLabel jlab = new JLabel(" Swing means powerful GUIs.");
        jfrm.add(jlab);
        jfrm.setVisible(true);
    }

    public static void main(String args[]) {
        public void run() {
            new SwingDemo();
        }
    }
}

错误信息如下:
Multiple markers at this line
    - Syntax error on token "void", @ expected
    - Syntax error, insert "enum Identifier" to complete EnumHeaderName
    - Syntax error, insert "EnumBody" to complete BlockStatements

请使用逻辑和一致的缩进代码行和块的形式。缩进旨在使代码的流程更易于跟踪! - Andrew Thompson
2个回答

6

只需用以下代码替换您的主函数即可。

public static void main(String args[]) {
    // Create the frame on the event dispatching thread.
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            new SwingDemo();
        }
    });
}

2
@penta,你可能会发现这个源在理解事件分派线程方面很有用。 - benscabbia

0
首先,你使用集成开发环境吗?
你的run()方法在main()方法内部。无论如何,你都不需要一个run方法。只需从main()中实例化new SwingDemo(),然后删除run()函数,就像这样:
 public static void main(String[] args) {
         new SwingDemo();
 }

2
“你不需要运行方法。” 但是在构建Swing GUI时最好有一个计划在EDT上运行的方法。请参阅Swing中的并发:初始线程了解详情。 - Andrew Thompson
我同意你最好使用run()方法,但不适用于像这样简单的程序。 - user4232819
1
“但对于像这样的简单程序来说,这并不是一个问题。” 像这样简单的程序不应受到不一致行为的影响。如果没有在EDT上启动,它们将会表现出来。每个Swing程序,从最简单到最复杂,都应该在EDT上运行。 - Andrew Thompson
好的,我的错!这样吧,你的评论我点了赞。 - user4232819

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接