Графический интерфейс Netbeans, передающий значения текстового поля действию, определенному в приложении, а не в представлении - PullRequest
0 голосов
/ 21 ноября 2011

Я создал простое приложение в Netbeans, оно содержит несколько текстовых полей для ввода данных пользователем и кнопку, я связал действие с кнопкой через интерфейс Netbeans, но я решил определить действие в приложении, а не в представлении чтобы следовать некоторому понятию MVC.

Действие работает нормально, я могу распечатать консоль каждый раз, когда нажимается кнопка.

Но чтобы сделать то, что я хочу, мне нужны значения, включенные в поля jTextFields!

Как это сделать? Это код в TestApp.java:

@Action
public void ClickedOnButton() {
    System.out.println("Clicked ok");
    System.out.println("Will now attempt to read notes.ini");

    ReadNotesFile();
}

А это код в TestView.java:

javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(tpa_fixer.TPA_FixerApp.class).getContext().getActionMap(TPA_FixerView.class, this);
    jButton1.setAction(actionMap.get("ClickedOnButton")); // NOI18N

1 Ответ

1 голос
/ 21 ноября 2011

Что вы пробовали, и как это не работает? Стандартный способ заставить JTextField отображать текст - вызвать для него setText(). Вы пытались это сделать?

Кроме того,

  • Прошли ли вы учебник Swing по этим концепциям, включая использование текстовых компонентов, JButtons и ActionListeners?
  • Видите ли вы какие-либо ошибки в этих попытках? Если это так, опубликуйте их здесь.
  • Ваш класс "control", класс с кодом слушателя, отделен от вашего "view" или класса GUI? Если да, есть ли у элемента управления действительная ссылка для просмотра?

Редактировать
Вы заявляете:

Я не хочу устанавливать текст в jTextFields, я хочу извлечь значения из них и использовать его в методе, который запускается при нажатии на кнопку. Я не могу понять, как это сделать, если не смогу каким-либо образом передать аргументы в теле определения действия в классе View.

Что я сделал в этой ситуации, где мне нужно извлечь информацию из полей графического интерфейса для манипуляций в других классах:

  • Вы можете присвоить каждому полю связанный публичный метод getText (), а затем вызвать эти методы, используя ссылку элемента управления на объект представления. Например, скажем, представление имеет nameField JTextField, тогда я бы дал ему метод getNameFieldText (), который возвращает nameField.getText();.
  • Если у вас было много таких полей, то может быть более эффективно использовать только один метод getText, но разрешить ему параметр, позволяющий вам выбирать, из какого поля извлекать текст. Чтобы это работало эффективно, я иногда назначал моему графическому интерфейсу HashMap, а затем передавал управление ключу String, который позволяет методу getText получить правильное поле JText, получить его текст и вернуть его. Я часто использую те же строки, что и JLabels, связанные с JTextField, в качестве ключевых строк.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...