创建这样的Java Frame是一个好习惯吗?

3

我之所以问这个问题,是因为当我开始学习GUI时,我并不太喜欢其他人使用的方法,所以我自己创造了这种方法。下面的代码是创建框架的类。

  class Frame{
        private JFrame frm;
        private JLabel desc;
        private JTextField username;
        private JPasswordField password;

        Frame(){
            //Creating and setting the frame
            frm = new JFrame();
            frm.setLayout(new FlowLayout());
            frm.setDefaultCloseOperation(frm.EXIT_ON_CLOSE);
            frm.setResizable(true);
            frm.setSize(300, 300);
            frm.setLocationRelativeTo(null);
            frm.setTitle("Default title");

            //Initializing variables
            desc = new JLabel("This is the description");
            username = new JTextField("Username");
            password = new JPasswordField("Password");
            EventHandler handler = new EventHandler();          

            //Adding components to the frame
            frm.add(desc);
            frm.add(username);
            frm.add(password);

            //Handling the components
            username.addActionListener(handler);
            password.addActionListener(handler);

            //Showing the frame
            frm.setVisible(true);
        }

        class EventHandler implements ActionListener{   
            public void actionPerformed(ActionEvent event){
                if(event.getSource() == username){
                    JOptionPane.showMessageDialog(null, "You typed \"" + username.getText() + "\" inside the username box.");
                } else if(event.getSource() == password){
                    JOptionPane.showMessageDialog(null, "You typed \"" + password.getText() + "\" inside the password box.");
                }
            }
        }
    }

在主类中只需简单地放置如下内容:
Frame frm = new Frame();

创建它。


1
旁注:类名大写时,代码更易于阅读。 - BitNinja
在Java SE中有一个名为“java.awt.Frame”的类,因此如果您要保存它,可能需要更改类名或将其放入包中,以减少任何可能的混淆。 - Levenal
1
那个人是怎么创建它的? - fgb
如果您能够包含“其他人”的代码,那就更好了,这样就有东西可以进行比较和对比。 - ChiefTwoPencils
1个回答

1

看起来不错。

  1. Java类名应该以大写字母开头。Frame是一个Java类,所以你应该把你的类命名为MyFrame(或者其他任何名称,但不能使用Frame)。

  2. 你需要将你的类放在事件调度线程(EDT)上。你可以使用以下代码实现:

.

SwingUtilities.invokeLater(new Runnable() {
    public void run() {
        new MyFrame();
    }
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接