Java Область статических переменных и использование переменных в слушателях действия кнопки

1

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

Пользователь моей программы может нажать одну из пяти кнопок вверху и вернуть случайную строку. У меня есть файлы, сохраненные в моей папке проекта, как в файле string.jpg, но я не могу выполнить свой код.

Я знаю его что-то с областью видимости, потому что, когда я помещаю выходную строку для печати на экран, у него появляется сообщение об ошибке null, и я получаю исключение с нулевым указателем. У меня была та же проблема с установкой текстового поля, но я использовал (возможно?) Плохое обходное решение, которое я сделал.

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

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

Теги:
scope
file
user-interface
image

1 ответ

1

ImageIcon image = new ImageIcon(imgStr); вызывается до инициализации imgStr.

imgStr назначается только при нажатии одной из кнопок. Вы должны дать ему начальное значение.

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

  • 0
    @ Майк слушатель меняет переменную, но он также должен создать новый ImageIcon и обновить label3 с ним.
  • 0
    Поэтому я изменил свои «глобальные» переменные в верхней части моего класса, а затем добавил новые iamgeicon и label3 в мой слушатель среднего действия (см. Оригинальный пост), но все равно ничто не меняет картину. Но строка печати выводит правильную строку на консоль. Извините, если я не знаю ..
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню