Java JFrame不包括某些变量

Java JFrame不包括某些变量,java,swing,methods,jframe,Java,Swing,Methods,Jframe,我不熟悉使用JFrame。我有一个独立于主类的JFrame类。我一直很难让它正常工作,比如把它和主课分开。但是我有一个问题,我的JFrame类中的构造函数没有被使用,并且无论出于什么原因都不能被使用 这是调用它的类: public class Main{ public static void main(String[] args) { DisplayWindow start = new DisplayWindow(); start.setVisible(true); 这是

我不熟悉使用JFrame。我有一个独立于主类的JFrame类。我一直很难让它正常工作,比如把它和主课分开。但是我有一个问题,我的JFrame类中的构造函数没有被使用,并且无论出于什么原因都不能被使用

这是调用它的类:

public class Main{ 

public static void main(String[] args) {

    DisplayWindow start = new DisplayWindow();
    start.setVisible(true);
这是实际的JFrame类:

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由于某种原因没有被使用,我不知道为什么。还有,为什么我必须将我的公共构造函数DisplayWindow命名为与类名Display Window相同的名称?我有点想改变这一点。总而言之。 -未使用DisplaySet,当我尝试更改它时,它会给我错误。 -说明:为什么必须将构造函数DisplayWindow命名为与类DisplayWindow相同的名称? -我是否正确地调用了这个JFrame类

谢谢

-未使用DisplaySet,当我尝试更改它时,它会给我错误

DisplaySet是静态的,根据您所描述的,您不希望从类的构造函数中调用它,相反,您可以从main方法调用它

为什么必须将构造函数DisplayWindow命名为与类DisplayWindow相同的名称

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

您可以查看和了解更多详细信息

-我是否正确地调用了这个JFrame类

是的,尽管一般惯例/智慧会阻止您直接从顶级容器(如JFrame)进行扩展,因为它将您视为一个单一用例,而您实际上并没有向框架添加任何功能


您还可能会发现,它很有用,它将使人们更容易阅读您的代码,您也更容易阅读他人

还有,为什么我必须将我的公共方法DisplayWindow命名为与类名Display Window相同的名称你知道你说的是一个构造函数,不是一个方法,对吧?而且DisplaySet并没有被使用。。。因为它是一个从未被调用的静态方法。对不起,是的,我的意思是constructorDisplaySet没有被使用,因为它没有被调用。DisplayWindow方法不是一个方法,它是一个构造函数,这是基本的Java 101DisplaySet,没有使用,当我试图更改它时,它会给我错误。您如何更改/调用它?它给出了什么错误?
public static void main(String[] args) {

    DisplayWindow.DisplaySet();

}