JFrame不包括某些变量

时间:2015-06-12 23:01:02

标签: java swing methods jframe

我是使用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未使用,并在我尝试更改时给出错误。 -Explanation:为什么我必须将构造函数DisplayWindow命名为DisplayWindow类? - 我在main中正确调用这个JFrame类吗?

谢谢

1 个答案:

答案 0 :(得分:2)

  

-DisplaySet未使用,并在我尝试更改时给出错误

DisplaySetstatic,根据您的描述,您不想在类的构造函数中调用它,而是可以从main方法调用它

public static void main(String[] args) {

    DisplayWindow.DisplaySet();

}
  

为什么我必须将构造函数DisplayWindow命名为DisplayWindow类?

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

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

  

-Am我在main中正确调用了这个JFrame类?

是的,虽然一般惯例/智慧会阻止您直接从像JFrame这样的顶级容器扩展,因为它会将您看作一个用例并且您实际上并未向框架添加任何功能< / p>

您可能还会发现Code Conventions for the Java TM Programming Language,非常有用,它可以让人们更轻松地阅读您的代码并让您阅读其他代码