2015-10-14 5 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. Другие классы в проекте не должны знать об этом. Инкапсуляция идет рука об руку с скрытием информации. Сохраняет ваши интерфейсы в чистоте.

Смежные вопросы