2015-10-14 90 views
1

哪种更好,为什么? 在我没有受过教育的意见中,最好将它们放在单独的文件中,因为如果您有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(); 
    } 
} 

回答

2

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

不,没有什么杂乱的。 包含该类的文件的结构将为 ,其中包含一个主类和其他几个类, 不能从除该类之外的任何其他地方访问。

为什么你会选择一个吗?

封装。 如果听众不会被用于您的项目中的任何其他课程,则 则无需公开它们。事实上,暴露他们(使他们可见)是可以混乱的。 使用主类的其他代码也会看到监听器类 ,即使它们不能用于任何事情。

即使您将类保留为内部类型,例如与您一样simpleEventListener, ,您应该将其设置为private而不是public。 项目中的其他类不需要知道它。 封装与信息隐藏结合在一起。 它保持你的接口清洁。