Не могу добавить JButton в JPanel во время работы - PullRequest
2 голосов
/ 02 ноября 2011

Я хочу добавить JButton в JPanel после нажатия кнопки, поэтому вот мой код:

   JButton testButton = null;

   private void sendmessageButtonActionPerformed(java.awt.event.ActionEvent evt) {
       testButton = new JButton();       
       totalPane.add(testButton,BorderLayout.CENTER);
       totalPane.revalidate();
       totalPane.repaint();
    }

Я использую конструктор Netbean GUI.Когда я нажимаю, ничего не происходит.Кто-нибудь может мне помочь?

Ответы [ 3 ]

2 голосов
/ 02 ноября 2011

ваш код правильный для стандартных Swing JComponents ,

1) totalPane инициализировано

2) totalPane добавлено в Контейнер

3) totalPane виден в контейнере

4) есть BorderLayout определено для totalPane, в противном случае есть FlowLayout по умолчанию

Вы можете просто проверить это, добавив Границы (totalPane.setBorder(BorderFactory.createLineBorder(Color.red));) к totalPane

0 голосов
/ 02 ноября 2011

Пожалуйста, отладьте ваш код и проверьте, выполняется ли ваш метод. Если это не так, то мы знаем проблему, и вы должны убедиться, что ваш метод выполняется.

Обратите внимание, что существует альтернатива вашему подходу: вы можете создать кнопку во время инициализации и установить для ее видимости значение false. Когда вам это нужно, вы можете сделать это видимым. Тем не менее, ваш подход должен работать.

0 голосов
/ 02 ноября 2011

Ваш код для добавления кнопки правильный, хотя ваш вызов repaint () ничего не даст - достаточно revalidate ().

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

...