Java JPanel.add(...)无效

时间:2011-11-20 15:07:41

标签: java swing awt

这是我到目前为止编写的代码,以及我收到的错误。我确定我之前没有错误地完成了类似的代码。我很确定我错过了一些愚蠢的东西,但我无法弄清楚或在网上找到任何东西。

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

public class MyFrame extends JFrame {

    JPanel mainPanel = new JPanel();
    JButton editButton = new JButton("Edit");
    JPanel.add(editButton);
}

错误:

Syntax error on token(s), misplaced construct(s) - for the underlined '.' 
on the last line
Syntax error on token "editButton", VariableDeclaratorId expected after this 
token - for the underlined parameter within the brackets on the last line.

2 个答案:

答案 0 :(得分:5)

您正在尝试使用它,就像它是静态方法一样 - 您希望将哪个面板添加到编辑按钮?您需要在 mainPanel

上将其命名为
mainPanel.add(editButton);

但是,你不能在类声明中这样做 - 像这样的语句必须在方法或构造函数中。所以你可能想要:

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

public class MyFrame extends JFrame {       
    JPanel mainPanel = new JPanel();
    JButton editButton = new JButton("Edit");

    public MyFrame() {
        mainPanel.add(editButton);
    }
}

或者可能将所有初始化放入构造函数中,并将变量设为final和private:

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

public class MyFrame extends JFrame {       
    private final JPanel mainPanel;
    private final JButton editButton;

    public MyFrame() {
        mainPanel = new JPanel();
        editButton = new JButton("Edit");
        mainPanel.add(editButton);
    }
}

答案 1 :(得分:2)

按如下方式使用。

mainPanel.add(editButton);

您必须通过它的对象调用它,而不是将其与类名相关联,因为它不是静态方法。