JFrame 不包括某些变量

JFrame not including certain variables

我刚开始使用 JFrame。我有一个独立于主 class 的 JFrame class。我一直无法让它工作,比如将它与主 class 分开。我有一个问题,虽然我的 JFrame class 中的构造函数未被使用,并且出于任何原因无法使用。

这是 class 它在以下位置被调用:

public class Main{ 

public static void main(String[] args) {

    DisplayWindow start = new DisplayWindow();
    start.setVisible(true);

这是实际的 JFrame Class:

public class DisplayWindow extends JFrame {

class ButtonOKListener implements ActionListener {
    public void actionPerformed(ActionEvent e) {
        JOptionPane.showMessageDialog(null, "OK Button Clicked");
    }
}

class ButtonCancelListener implements ActionListener {
    public void actionPerformed(ActionEvent e) {
        lblMessage.setText("The Cancel button was clicked");
    }
}

JButton btnOK;
JButton btnCancel;
JMenuBar menubar;
JMenu menu;
JMenuItem menuitem;
JLabel lblMessage;
JPanel pnlHolder;
ButtonOKListener btnOKListener;
ButtonCancelListener btnCancelListener;

public DisplayWindow() {

    //
    menubar = new JMenuBar();
    menu = new JMenu("This is something");
    menuitem = new JMenuItem("File");
    pnlHolder = new JPanel();
    btnOKListener = new ButtonOKListener();
    btnCancelListener = new ButtonCancelListener();

    btnOK = new JButton("OK");
    btnOK.addActionListener(btnOKListener);
    btnOK.setBounds(50, 50, 20, 40);
    btnCancel = new JButton("Cancel");
    btnCancel.addActionListener(btnCancelListener);

    lblMessage = new JLabel();

    pnlHolder.add(menubar);
    menubar.add(menu);
    menu.add(menuitem);
    pnlHolder.add(btnOK);
    pnlHolder.add(btnCancel);
    pnlHolder.add(lblMessage);
    this.add(pnlHolder);
}    
public static void DisplaySet() {

    DisplayWindow GUI = new DisplayWindow();
    GUI.setTitle("Graphical User Interface");
    GUI.setSize(300, 200);
    GUI.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    GUI.setVisible(true);    
}}

DisplaySet 由于某种原因没有被使用,我不知道为什么。另外,为什么我必须将 public 构造函数 DisplayWindow 命名为与 class 名称 Display Window 相同的名称?我有点想改变它。总结一下。 -DisplaySet 未使用,当我尝试更改它时出现错误。 -说明:为什么我必须将构造函数 DisplayWindow 命名为与 class DisplayWindow 相同的名称? - 我是否在主体中正确调用了这个 JFrame class?

谢谢

-DisplaySet is not used, and gives me errors when I try to change it

DisplaySetstatic 并且根据您的描述,您不想从 class 的构造函数中调用它,相反,您可以调用它来自 main 方法

public static void main(String[] args) {

    DisplayWindow.DisplaySet();

}

Why do I HAVE to name constructor DisplayWindow the same as the class DisplayWindow?

因为这是语言的要求,一些语言使用 init 作为构造函数,Java 使用 class 的名称。

您可以查看 Providing Constructors for Your Classes and Chapter 8.8. Constructor Declarations of the Java Language Specifications 了解更多详情

-Am I calling this JFrame class correctly in the main?

是的,虽然一般 convention/wisdom 会阻止您直接从像 JFrame 这样的顶级容器进行扩展,因为它会让您进入单个用例,而您实际上并没有添加任何功能到框架

您可能还会发现 Code Conventions for the Java TM Programming Language 很有用,它会让人们更容易阅读您的代码,也让您更容易阅读其他人