0

RAMを節約するために、必要な場合にのみクラスを作成し、後で再利用したいと思います。

私のクラスはこれです:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class Engine implements ActionListener {

    JFileChooser fileChooser = new JFileChooser();
    Boolean addWindow = false;

    Engine(){}

    //@ void actionPerformed()
    public void actionPerformed(ActionEvent evt){

        if ( evt.getActionCommand().equals("add") ) {
            if ( addWindow = false ) {
                Add Add = new Add();
                Add.setVisible(true);
            }
            else Add.setVisible(true);
        }
    }
}

(プロジェクトの1つのクラスのみ)

自分ではばかげた間違いだと思いますが、わかりません。

しかし、私がコンパイルしようとすると、それは言う:

Engine.java:21:エラー:非静的メソッドsetVisible(boolean)を静的コンテキストから参照できません:else Add.setVisible(true); (マーカーはAddとsetVisible()の間のポイントにあります。)

毎回Addクラスを再作成したくありません。すでに作成されている場合は再利用してください。

4

1 に答える 1

3
Add add = new Add();
if ( addWindow == false ) { //Thanks to @TofuBeer's comment. I didn't notice this at all.         
    add.setVisible(true);
}
else
    add.setVisible(true);

(クラス自体の名前である)を使用しているAddため、メソッドを静的に呼び出そうとしています。これにより、クラス内の静的メソッドではないため、エラーがスローされますAdd

作成したインスタンスを使用してメソッドを呼び出し、インスタンス名がクラス名と正確に一致していないことを確認します(クラス名は大文字Aです)。

追加-クラス名

add --instance name(Addここでも指定すると、インスタンス名ではなくクラス名が考慮されます)。

于 2013-03-22T04:16:12.637 に答える