放置事件监听器的位置。

时间:2015-10-14 22:27:07

标签: java user-interface event-handling subclass

哪个更好,为什么? 在我没有受过教育的意见中,最好将它们放在单独的文件中,因为如果你有10个按钮,5个组合框和一个或两个列表在一个文件中包含所有这些类将变得混乱。我是否正确地想到了这一点?为什么你会选择一个而不是另一个?

SimpleGUI.java:

public class simpleGUI extends JFrame {

public JButton button;
public JLabel label;
public simpleGUI() {
Container contentPane = getContentPane();
JPanel panel = new JPanel();
label = new JLabel("123abc");
button = new JButton("click me");

    simpleEventListener c = new simpleEventListener();
    c.setParams(label);
    button.addActionListener(c);

    panel.add(button);
    panel.add(label);

    contentPane.add(panel);

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setSize(300,300);
    setTitle("simpleGUI");
    setVisible(true);
}
public static void main(String[]args) {
    JFrame frame = new simpleGUI();
}
}

simpleEventListener.java:

 public class simpleEventListener implements ActionListener {
        private JLabel label;
        public void actionPerformed(ActionEvent e) {
            label.setText("Hello World!");
        }
        public void setParams(JLabel label) {
            this.label = label;
        }
    }

或:

public class simpleGUI extends JFrame {
    public JButton button;
    public JLabel label;
    public simpleGUI() {
        Container contentPane = getContentPane();
        JPanel panel = new JPanel();
        label = new JLabel("123abc");
        button = new JButton("click me");

        simpleEventListener c = new simpleEventListener();
        button.addActionListener(c);

        panel.add(button);
        panel.add(label);

        contentPane.add(panel);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(300,300);
        setTitle("simpleGUI");
        setVisible(true);
    }
    public class simpleEventListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            label.setText("Hello World!");
        }
    }
    public static void main(String[]args) {
        JFrame frame = new simpleGUI();
    }
}

1 个答案:

答案 0 :(得分:2)

  

最好将它们放在单独的文件中,因为如果你有10个按钮,5个组合框和一个或两个列表在一个文件中包含所有这些类将变得混乱。我是否正确地想到了这一点?

没有。关于它没有什么真正的混乱。 包含该类的文件将是结构化的, 有一个主类和其他几个类, 除了班级以外的任何其他地方都无法访问。

  

为什么你会选择一个而不是另一个?

封装。 如果监听器不会用于项目中的任何其他类, 那么就没有必要暴露它们了。事实上,揭露它们(使它们可见)是可能是混乱的。 使用主类的其他代码也会看到监听器类, 即使他们不能用它们做任何事情。

即使你将这些类保持为内部,例如你所做的simpleEventListener, 你应该private而不是public。 项目中的其他类不需要了解它。 封装与信息隐藏密切相关。 它可以保持您的界面清洁。