#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. Ни больше, ни меньше. 🙂