1

それが始まるところjava.awtpublic void run()、どちらも赤で下線が引かれ、マウスでそれらをクリックすると、初期化子をコンストラクターに移動するようにというメッセージが表示されます。誰でもこれで私を助けることができますか?

public static void main (String[] args) {
    // TODO code application logic here
    EmployeeRecord main = new EmployeeRecord() {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new EmployeeRecord().setVisible(true);
            }
        )}
    }
}
4

1 に答える 1

1

ラッパーを取り出します。以下は、必要なすべてです。

public static void main (String[] args) {

    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new EmployeeRecord().setVisible(true);
        }
    });    // <======= Notice the change here too. 
}

クラスのメソッドinvokeLaterを静的に呼び出すだけです。EventQueueあなたがしていることをすることは、まったく異なる(違法な)構成であり、それは不可能です. 基本的に匿名クラスのインスタンスを作成しており、その中で同じコンストラクターを呼び出しています。それが次のような正しい構成であったとしても

public static void main (String[] args) {
    // TODO code application logic here
    EmployeeRecord main = new EmployeeRecord() {
        {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new EmployeeRecord().setVisible(true);
                }
            });
        }
    };
} 

不要なインスタンスを作成することになります。

于 2014-09-06T11:52:34.157 に答える