Как добавить компоненты во время выполнения в пользовательский интерфейс Swing, созданный с помощью визуального редактора Netbeans? - PullRequest
2 голосов
/ 11 июля 2009

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

Сгенерированный код пользовательского интерфейса входит в метод initComponents (), который я не могу изменить, поскольку он автоматически генерируется из визуальной формы.

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

Так что в основном:

  • Как найти компонент Swing во время выполнения?
  • Есть ли лучший способ интеграции компонентов, созданных во время выполнения, в сгенерированный пользовательский интерфейс Swing?

Спасибо за вашу помощь.

Ответы [ 3 ]

1 голос
/ 11 июля 2009

Сгенерированные NetBeans классы GUI хранят все компоненты в закрытых переменных. Вы можете добавить метод в сгенерированный класс, который возвращает панель, и он останется даже при дополнительном проектировании.

Если вы собираетесь использовать сгенерированный пользовательский интерфейс, то, вероятно, лучше использовать JPanel в этом пользовательском интерфейсе, чтобы "вырезать" пространство для ваших собственных компонентов. В противном случае вам придется беспокоиться о том, как ваши компоненты влияют на расположение компонентов, размещаемых пользовательским интерфейсом.

0 голосов
/ 15 июля 2009

Можно изменить частное на защищенное / общедоступное, щелкнув правой кнопкой мыши компонент в GUI-Designer, выбрав свойства и нажав вкладку «Источник» или щелкнув правой кнопкой мыши компонент и выбрав «Изменить источник» (или что-то подобное что) и установка соответствующего модификатора доступа. Или просто экспортируйте их с помощью метода getXYZComponent ().

Нахождение компонента должно быть слишком сложным, поскольку вы создали его вместе с конструктором и, таким образом, знаете каждый компонент. Например, если у вас есть JTabbedPane и вы хотите добавить к нему вкладки, когда пользователь нажимает кнопку или что-то в этом роде, вы просто выдадите myJTabbedPane.add (myCustomComponent); et вуаля, появляется новая вкладка.

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

0 голосов
/ 11 июля 2009

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

...