У меня есть простой GUI, у которого есть jTextField, который ждет, когда пользователь что-то вставит. После нажатия кнопки программа:
- считывает ввод, сохраняет его в строковой переменной;
- открывает новый GUI (то есть в отдельном файле класса) , который содержит пустой jLabel и передает ему переменную String, изменяя ему текст jLabel.
Проблема в том, что как бы я ни старался перенастроить код, добавляя такие вещи, как перерисовка (), revalidate (), et c., jLabel во втором GUI остается пустым. Использование System.out.println (jLabel.getText ()) показывает, что текстовое значение действительно изменено, но не отображается. Как мне «refre sh» этот jLabel, чтобы он показывал то, что я хочу? Я знаю, что могу добавить событие, хотя я не хочу, чтобы пользователь нажимал что-либо, чтобы обновить sh GUI, значения должны быть там, как оно было инициировано. Я прочитал несколько похожих постов, но обнаружил, что решения не работают для меня.
Код первого события нажатия кнопки GUI:
private void sbuttonActionPerformed(java.awt.event.ActionEvent evt) {
errortext.setText("");
Search = sfield.getText();
Transl = hashes.find(Search);
if (Transl.equals("0")) errortext.setText("Word not found in database.");
else {
ws.run(Search, Transl); // <- this opens the second GUI, with two String parameters I want to display in the second GUI;
}
}
код второго GUI (activeword и перевод - это jLabels, которые доставляют мне неприятности.):
public void run(String Search, String Transl) {
WordScreen init = new WordScreen(); //initialise the second GUI;
init.setVisible(true);
activeword.setText(Search);
translation.setText(Transl);
}
Любой ответ очень приветствуется! Пожалуйста, попросите у меня дополнительную информацию о коде, если необходимо, я постараюсь ответить как можно скорее!