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);
        }
    }
}

(只是一类项目)

我认为这只是我自己的一个愚蠢的错误,但我无法弄清楚。

但是如果我尝试编译它会说:

Engine.java:21:错误:不能从静态上下文引用非静态方法 setVisible(boolean):否则 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(这是 Class 本身的名称),它试图静态调用该方法,这会引发错误,因为它不是您的 class 中的静态方法Add

使用您创建的实例来调用该方法并确保实例名称不完全是类名(类名带有大写字母A)。

添加- 类名

add - 实例名(如果你Add也在这里给出,它会考虑类名而不是实例名)。

于 2013-03-22T04:16:12.637 回答