我是使用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类吗?
谢谢
答案 0 :(得分:2)
-DisplaySet未使用,并在我尝试更改时给出错误
DisplaySet
是static
,根据您的描述,您不想在类的构造函数中调用它,而是可以从main
方法调用它
public static void main(String[] args) {
DisplayWindow.DisplaySet();
}
为什么我必须将构造函数DisplayWindow命名为DisplayWindow类?
因为这是语言的要求,有些语言使用init
作为构造函数,Java使用类的名称。
您可以查看Providing Constructors for Your Classes和Chapter 8.8. Constructor Declarations of the Java Language Specifications了解更多详情
-Am我在main中正确调用了这个JFrame类?
是的,虽然一般惯例/智慧会阻止您直接从像JFrame
这样的顶级容器扩展,因为它会将您看作一个用例并且您实际上并未向框架添加任何功能< / p>
您可能还会发现Code Conventions for the Java TM Programming Language,非常有用,它可以让人们更轻松地阅读您的代码并让您阅读其他代码