Java JPanel.add(...)无效

Mat*_*ini 1 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);
}
Run Code Online (Sandbox Code Playgroud)

错误:

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.
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 5

您正试图使用​​它,就像它是一个静态方法 - 您希望将面板添加到哪个面板?你需要调用它mainPanel:

mainPanel.add(editButton);
Run Code Online (Sandbox Code Playgroud)

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

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

或者可能将所有初始化放入构造函数中,并将变量设为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);
    }
}
Run Code Online (Sandbox Code Playgroud)