Как добавить несколько результатов слушателя события действия в диалог - PullRequest
0 голосов
/ 05 мая 2019

Так что у меня есть простой графический интерфейс Java, который имеет два редактируемых текстовых поля.

Если я введу первое, появится диалоговое окно с первым полем.

##########################################
# Message                              x #
##########################################
# Your textfields                        #
# 1: this is an editable field           #
#                                        #
##########################################

Если я вхожу, появится диалоговое окно, в котором отображается второе поле.

##########################################
# Message                              x #
##########################################
# Your textfields                        #
# 2: this is an editable field 2         #
#                                        #
##########################################

Однако возможно ли открыть диалоговое окно, в котором оба поля отображаются пов то же время?

##########################################
# Message                              x #
##########################################
# Your textfields                        #
# 1: this is an editable field           #
# 2: this is an editable field 2         #
##########################################

Это то, что я сделал до сих пор:

Мои текстовые рамки:

class EditTextFrame extends JFrame 
{
  private JTextField editableField1; 
  private JTextField editableField2; 


   public EditTextFrame()
   {
          setLayout(new FlowLayout());

       editableField1 = new JTextField("This is an editable field", 25); 
       editableField2 = new JTextField("This is an editable field2", 25); 

       add(editableField1);
       add(editableField2);

       TextFieldHandler handler = new TextFieldHandler();
       editableField1.addActionListener(handler);
       editableField2.addActionListener(handler);
   } 

Мои события Action:

private class TextFieldHandler implements ActionListener 
   {
      @Override
      public void actionPerformed(ActionEvent e)
      {
         String string1 = ""; 
         String string2 = ""; 


         if (e.getSource() == editableField1)
            string1 = String.format("1: %s",
               e.getActionCommand());

          if (e.getSource() == editableField2)
            string2 = String.format("2: %s",
               e.getActionCommand());


         JOptionPane.showMessageDialog(null, "Your textfields \n" + string1 + string2
                    ); 

      }
   }

Я знаю, что мой string concat бесполезен, так как один из них будет пустым, поскольку оператор if останавливается после выполнения условия ... но я не могу найти способ обойти ..

1 Ответ

1 голос
/ 05 мая 2019

Если оба текстовых поля будут заполняться каждый раз (ожидаемый ввод - оба поля, а ожидаемый вывод - оба), вы можете создать два отдельных обработчика событий и прикрепить по одному к каждому текстовому полю.Пусть один для первого текстового поля сохранит строку в глобальной переменной, затем второй объединит две строки вместе, а затем откроет текстовое поле.

Однако для обработки всех типов входных данных (только одинили оба поля) Я бы добавил третью кнопку «отправить».Попросите эту кнопку отправки вытащить строки из обоих текстовых полей, а затем откройте диалоговое окно.Инициализируйте строки как пустые (""), чтобы гарантировать отсутствие нулевых указателей.

 private String field1String = "";
 private String field2String = "";

    // you'll need one of these for each text field
    private class TextField1Handler implements ActionListener 
           {
              @Override
              public void actionPerformed(ActionEvent e)
              {
                field1String = yourField1.getText();

              }
           }

      // attach this to your button
      private class ButtonClickHandler implements ActionListener 
           {
              @Override
              public void actionPerformed(ActionEvent e)
              {
                 JOptionPane.showMessageDialog(null, "Your textfields \n" + 
                  field1String + field2String); 

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