Я просто прочитал довольно интересное объяснение различий между ними и растущее предпочтение прикреплять модели к контроллеру и псевдоним контроллера для привязки моделей к представлению. http://toddmotto.com/digging-into-angulars-controller-as-syntax/ - статья. Он не упоминает об этом, но при определении директив, если вам нужно поделиться чем-то между несколькими директивами и не хотеть службы (есть законные случаи, когда услуги - это хлопот), тогда прикрепите данные к контроллеру родительской директивы. Служба $ scope предоставляет множество полезных вещей, $ watch является наиболее очевидным, но если все, что вам нужно, привязать данные к представлению, используя простой контроллер и «контроллер как» в шаблоне, отлично и, возможно, предпочтительнее.
Внутри метода actionPerformed()
необходимо иметь вызовы removeAll()
, setBackground()
и InitializeGame()
внутри блока if
, как я показал ниже:
В противном случае весь пользовательский интерфейс сбрасывается каждый время, когда вы нажимаете любую кнопку. (Потому что вы добавили один и тот же ActionListener
ко всем кнопкам.)
public void actionPerformed(ActionEvent e)
{
if (((JButton) e.getSource()).getText().equals("Click to Play")) {
removeAll();
setBackground(Color.pink);
InitializeGame();
}
if ( e.getActionCommand().equals( "s1" ) )
{
((JButton)e.getSource()).setText("X");
}
repaint();
}