1

私はこのコードを持っています

public class watermark {

    public static void main(String[] args) {
        wmmain m = new wmmain();
        m.setSize(800, 500);
        m.setVisible(true);
    }

    class wmmain extends JFrame /* MAIN WINDOW */
    {
        JMenuBar jmb;
        // ......
    }
}

コマンドプロンプトからは正常に動作しますが、Eclipseでコードを実行しようとすると、次のエラーが表示されます:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
No enclosing instance of type watermark is accessible. Must qualify the allocation with an enclosing instance of type watermark (e.g. x.new A() where x is an instance of watermark).

at watermark.main(watermark.java:20)

私は何をすべきか??

4

3 に答える 3

3

ドキュメントから:

内部クラスをインスタンス化するには、まず外部クラスをインスタンス化する必要があります。

構文:

OuterClass.InnerClass innerObject = outerObject.new InnerClass();

内部クラスのインスタンスを作成するには、外部クラスのインスタンスが必要です。

wmmain m=new WaterMark().new wmmain();
于 2013-01-30T13:37:11.523 に答える
0

wmmainクラスがからのメンバー変数を使用しておらず、ウィンドウクラスを非表示にする場合は、プライベート静的内部クラスとしてwatermark宣言することもできます。wmmain

public class watermark {
    public static void main(String[] args) {
        wmmain m =  new wmmain();
        m.setSize(800, 500);
        m.setVisible(true);
    }

    private static class wmmain extends JFrame {
        JMenuBar jmb;
        // ......
    }
}
于 2013-01-30T13:53:12.053 に答える
0

独自のフォーム Static メソッド内で innerClass を呼び出すことはできないと思います。

import javax.swing.JFrame;
public class testFrame {
public static void main(String[] args) {
    // TODO Auto-generated method stub


}
private void getMe(){
    wmmain m = new wmmain();
    m.setSize(800,500);
    m.setVisible(true);
}
class wmmain extends JFrame /* MAIN WINDOW */
{
    public wmmain(){

    }
     }
     }

これを試して 。それが動作します 。または、PermGenErrorの回答を使用できます</p>

于 2013-01-30T13:49:06.083 に答える