NetBeans: связывание приложения и просмотра? - PullRequest
0 голосов
/ 22 июня 2010

при создании приложения с графическим интерфейсом в IDE NetBeans,

генерирует 2 файла: App.java и View.java

Можно ли включать логику приложения в view.java? моя интуиция говорит мне, что это плохая идея. Тем не менее, я не знаю, как я могу вызвать методы или как-то «зацепить» App.java с помощью View.java

Так что вместо того, чтобы помещать весь мой код для actionPerformed на кнопку, я бы просто вставил метод из App.java

Я новичок в Java. Если у кого-то есть хороший учебник или книга по Netbeans, думаю, я его куплю.

Ответы [ 2 ]

1 голос
/ 22 июня 2010

Другим хорошим подходом является изучение и использование классов действий.См. Как использовать действия

Такой класс Action инкапсулирует единицу работы («логин», «печать», ...), и вы просто присоединяете его к одному или нескольким элементам графического интерфейса пользователя.(JButton, JMenu, ...).Если вы используете эту концепцию, ваше приложение может расти легче.Разделение логики приложения, графического интерфейса пользователя и данных - это всегда хорошая идея.

Неполный пример

public class ShowListAction extends AbstractAction {

JTextArea listArea;
YourListHandler listHandler;

public ShowListAction() {
    this.putValue(Action.NAME,"Show List");
    // this.putValue(Action.SMALL_ICON, yourIcon); // You can set various Properties for your Action...
    this.setEnabled(enabled); // You can enable/disable the Action and hence any JButton connected to it ....
}

public void setListArea(JTextArea listArea) {
    this.listArea = listArea;
}

public void setListHandler(YourListHandler listHandler) {
    this.listHandler = listHandler;
}

public void actionPerformed(ActionEvent e) {
  // Here comes the actual work

  // list with data injected from another class which handles that
  List<String> list = listHandler.getNamesList();
  // output - correct
  for (String s : list) {
    listArea.append(s);
  }
}

}

Чтобы использовать это, вам нужно создать / извлечь экземпляр Action в вашем представлении иприкрепите его, например, к JButton с

yourButton.setAction(theAction)
0 голосов
/ 22 июня 2010

Зависит от количества кода.Если вы можете создавать целые приложения только с несколькими компонентами пользовательского интерфейса, тогда вы можете рассмотреть свою логику.

Но в чуть более крупных (а фактически практически во всех) приложениях вам необходимо определить собственные классы, а затем создать их экземпляры.Если это так, попробуйте добавить все свое логическое поведение в некоторые классы и просто создать там экземпляры в своем классе View.

Например, если вы хотите записать какой-то список в JTextArea, не очень хорошо создавать обаэто там и напишите это там.

Плохой подход:

public void actionPerformed(java.awt.event.ActionEvent evt) {
  // whole logic done here - bad
  List<String> list = new ArrayList<String>();
  list.add("John");
  list.add("Mike");
  list.add("Joe");
  // output - correct
  for (String s : list) {
    jTextArea.append(s);
  }
}

Хороший подход:

public void actionPerformed(java.awt.event.ActionEvent evt) {
  // list with data injected from another class which handles that
  List<String> list = new ListHandler().getNamesList();
  // output - correct
  for (String s : list) {
    jTextArea.append(s);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...