2015-02-18 2 views
0

Я пишу программу GUI, основной класс которой расширяет JFrame, реализует ActionListener. В GUI есть несколько элементов, включая некоторые пользовательские виджеты, которые расширяют JPanel. В главном окне есть два экземпляра одного из виджетов, но только первый обновляется должным образом после загрузки новых данных (приложение может загружать данные из файла и заполнять примерно 25 полей графического интерфейса). Второй экземпляр пользовательского виджета не реагирует (не меняет значения) после того, как он был ранее использован один раз. Я сожалею, что нет способа извлечь небольшой фрагмент кода, который бы воспроизвел проблему, но я использовал метод parString(), который был использован JPanel (и т. Д.) .Проблемы с проверкой JPanel

В первый раз используется виджет (и все в порядке), я получаю это: , 197,73,862x82, недействителен, расположение = javax.swing.GroupLayout, alignmentX = 0,0, alignmentY = 0,0, граница = javax .swing.border.BevelBorder @ 2ef5774e, флаги = 9, MaximumSize =, MinimumSize =, PreferredSize =

Второй раз виджет используется (и не реагирует), я получаю это:

,0,0,0x0,invalid,layout=javax.swing.GroupLayout,alignmentX=0.0,alignmentY=0.0,[email protected],flags=9,maximumSize=,minimumSize=,preferredSize= 

Я дополнительно попробовал revalidate() как виджет, так и его родительский элемент, но безрезультатно, this.myWidget.isValid() возвращает false (тогда как тот же метод из других компонентов в моем приложении возвращает true).

Любые идеи?

спасибо, Питер

+0

* "Я сожалею, что нет никакого способа, чтобы извлечь небольшой фрагмент кода, который воспроизведет проблему, .. »* Мне жаль, что я голосую, чтобы закрыть из-за отсутствия [MCVE] (http://stackoverflow.com/help/mcve). ОК .. Я просто шутил о «извините», но не о VTC. –

ответ

0

Я полагаю, когда виджет возвращает

197,73,862x82,invalid,layout=javax.swing.GroupLayout,alignmentX=0.0,alignmentY=0.0,[email protected],flags=9,maximumSize=,minimumSize=,preferredSize= 

первые цифры являются x=197, y=73, width=862, height=82. Это только предположение, но на второй раз, когда вы получаете

,0,0,0x0,invalid,layout=javax.swing.GroupLayout,alignmentX=0.0,alignmentY=0.0,[email protected],flags=9,maximumSize=,minimumSize=,preferredSize= 

Что будет означать x=0, y=0, width=0, height=0 то я могу предложить вам, чтобы попытаться вручную установить размер виджета размером 0x0 не является допустимым размером.

Additionnally, я полагаю, что вы измените вызов revalidate() на repaint() для вашего Widget, потому что revalidate() не может перекрасить сам виджет, но только его подкомпоненты

Смежные вопросы