【问题标题】:Is it a good practice to create a Java Frame like this?像这样创建 Java Frame 是一种好习惯吗?
【发布时间】:2014-07-21 22:21:03
【问题描述】:

我问这个是因为当我开始学习 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();

创建它。

【问题讨论】:

  • 附注:类大写时代码更易于阅读。
  • 未成年人,Java SE 中有一个类“java.awt.Frame”,所以如果你要保存它,你可能想要更改类名或给它一个包,以减少任何可能混乱。
  • 其他人是如何创作的?
  • 如果您包含“其他人”代码,我会很好,以便进行比较和对比。

标签: java class user-interface methods frame


【解决方案1】:

看起来不错。

  1. Java 类名应以大写字母开头。 Frame 是一个 Java 类,因此您应该调用您的类 MyFrame(或 Frame 以外的任何名称)。

  2. 您需要将您的课程放在Event Dispatch thread (EDT) 上。您可以使用如下代码执行此操作:

.

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

【讨论】:

    猜你喜欢
    • 2020-12-14
    • 2016-04-01
    • 2014-08-11
    • 2013-12-31
    • 1970-01-01
    • 2012-08-14
    • 2010-09-11
    • 1970-01-01
    • 2018-11-17
    相关资源
    最近更新 更多