有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

GUI中的java惰性初始化与急切初始化

我只是想知道在框架中创建组件时应该使用哪种类型的初始化

假设我有一个包含几个按钮的框架:

public class MainFrame extends JFrame {
    private JTextField dynamicText; // accessible

    public MainFrame() {
        initComponents()
    }

    private void initComponents() {
        dynamicText = getText();
        JButton open = createButton();
        JButton close = createButton();
        close.setEnabled(false);

        add(open);
        add(close);

        setVisible(true);
    }

    private JButton createButton() {
        JButton button = new JButton();
        // some customizations, like size, icons etc.
        return button;
    }

    private JTextField getText() {
        if (this.dynamicText== null) {
            this.dynamicText= new JTextField();
            // some customization
        }
        return this.dynamicText;
    }

    public void updateText() {
        // code to update dynamicText
    }
}

这是一个好方法吗


共 (2) 个答案

  1. # 1 楼答案

    您需要考虑以下因素来决定最佳策略:

    • 如果初始化过程需要很长时间,您可以在使用它之前异步初始化它
    • 如果jFrror很少使用,可以考虑按需初始化
    • 如果JFrame是动态的,请按需初始化它
    • 要创建更可读的代码,请使用渴望的方法
    • 如果JFrame不太重,并且经常使用,请使用渴望的方法
  2. # 2 楼答案

    选择取决于您的显示要求和初始化延迟。为了拥有最好的用户体验,一般的建议是考虑在需要时填充或不立即显示的组件中的惰性初始化。否则,为了简单起见,请坚持使用即时初始化