Использовать параметры метода и использовать его в другом методе?

#java

#java

Вопрос:

(Сложно объяснить, извините: P)

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

 private void displayError()
{
    JFrame frame = new JFrame(Title);
    frame.setSize(500, 100);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JLabel jlabel = new JLabel(Message, SwingConstants.CENTER);
    frame.setResizable(false);
    frame.add(jlabel);
    frame.setVisible(true);
    frame.setLocationRelativeTo(null);
}

public void throwError(String Title, String Message)
{
    displayError();
}
  

Однако, когда я запускаю его, он выдает пустой экран, когда я использую:

 throwError("Test", "This is a test.")
  

Как бы я заставил это работать, используя заголовок и сообщение от throwError()?

Редактировать: я использую displayError() несколько раз в своем коде, поэтому я не хочу делать это одним методом.

Пример:

 public void folderCreation()
{
    String Title = "Folder not created";
    String Message = "The required folder could not be created by this application";
    displayError();
}

public void cancel()
{
    Title = "Cancelling";
    Message = "Cancelling the current process. Do not turn off your PC.";
    displayError();
}

public void GenericError()
{
    Title = "Generic Error";
    Message = "The application has experienced an error and we don't what caused it.";
    displayError();
}
  

Описанные выше методы работают отлично, но throwError() этого не делает.

Комментарии:

1. Почему у вас не может быть просто одного метода?

2. У меня есть более одного метода, использующего displayError(). Например, смотрите отредактированный пост.

3. Конечно, но я не думаю, что вижу цель throwError . 1) Он ничего не выдает 2) он ничего не делает с параметрами 3) вы могли бы переместить весь код из displayError в throwError , и это сработало бы

4. Кроме того, попробуйте использовать JOptionPane … Всплывающее окно с ошибкой codereview.stackexchange.com/a/64252/95515

Ответ №1:

Это потому, что область Title и Message находится только внутри throwError() метода. Вы должны указать 2 параметра для displayError() метода следующим образом:

 private void displayError(String Title, String Message)..
  

И передавать ему throwError() аргументы при вызове:

 public void throwError(String Title, String Message)
{
    displayError(Title, Message);
}
  

Комментарии:

1. throwError хотя это бесполезный метод, лучше просто избавиться от него и вызвать displayError напрямую.

2. Да, просто предоставьте данные непосредственно конструктору, имеющему какой-либо вспомогательный метод, который ничего не делает.

3. Делегирование одному методу с той же подписью? Почему?

4. Да, я знаю, что это бесполезно, но я просто ответил на то, о чем просил OP. Ни больше, ни меньше. 🙂