2014-01-05 1 views
5

Я использую NetBeans, и у меня есть JFrame, где я добавил JPanel, используя палитру NetBeans.Java Swing: добавьте компонент по коду в NetBeans

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

ButtonGroup group = new ButtonGroup(); 
JRadioButton btn1 = new JRadioButton("btn1 "); 
JPanel1.add(btn1); 

Но когда я бегу, что JFrame я не вижу, что JRadioButton где-нибудь, но это работает, когда я добавляю его с помощью палитры NetBens's.

Как я могу решить эту проблему?

ответ

6
  1. Убедитесь, что JPanel не использует GroupLayout. Большинство других макетов будут работать хорошо, но, вероятно, на данный момент, JPanel по умолчанию FlowLayout будет работать лучше всего.
  2. Обязательно позвоните revalidate() и repaint() на JPanel после добавления компонента, если вы добавляете компонент после того, как GUI были оказаны, например, на кнопках.
  3. Если все еще есть проблемы, покажите свой код.
  4. Общие рекомендации: избегайте использования утилит для генерации кода до тех пор, пока вы не поймете основы библиотеки GUI, здесь Swing. Вы не пожалеете об этом.
+0

Я думаю, что он использует GroupLayout, но там, где я могу изменить его в NetBeans? –

+0

@SuSha: вы можете проверить свойства JPanel, и он точно скажет вам, какой макет он использует, и вы можете изменить его. Но опять же, ознакомьтесь с учебниками Swing Tutorials, отложите выделение кода NetBeans и сначала научитесь кодировать все вручную. –

+0

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

3

Проблема с NetBeans GUI Builder заключается в том, что он инициализирует все для вас, где вы не можете изменить код, если вы не откроете файл на какой-либо другой платформе. В этом случае у вас есть риск полностью испортить код.

Что я могу предложить, чтобы, возможно, пытаться что-то вроде этого

  • Создайте пустой JPanel с предпочтительным размером, который вы установили в property панели. Вы также можете настроить макет, в зависимости от ваших требований.
  • После initComponent() затем добавьте JRadioButtons

    public MyGUI(){ 
        initComponents(); 
        ButtonGroup group = new ButtonGroup(); 
        JRadioButton btn1 = new JRadioButton("btn1 "); 
        jPanel1.add(btn1); 
        jpanel1.revalidate(); // as @Hovercraft Full Of Eels suggested 
        jPanel1.repaint(); 
    } 
    
+0

Спасибо, это было полезно :) +1 –