2013-08-07 2 views
0

Почему границы на панелиПервый не работает? Он просто отображает все сверху и не отображает границы в том порядке, который я их установил? Радиокнопки должны отображаться в одном под другим, а следующая кнопка должна отображаться справа, но она не работает?Почему границы, не работающие над этим графическим интерфейсом

public MyWizard() { 
     panelContainer.setLayout(c1); 
     panelFirst.add(btNext); 
     panelSecond.add(btNextTwo); 
     panelFirst.setBackground(Color.BLUE); 
     panelSecond.setBackground(Color.RED); 
     panelThird.setBackground(Color.GREEN); 
     panelContainer.add(panelFirst, "1"); 
     panelContainer.add(panelSecond,"2"); 
     panelContainer.add(panelThird,"3"); 
     c1.show(panelContainer, "1");   
     btNext.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent arg0) { 
       c1.show(panelContainer,"2");      
      }    
     }); 

     btNextTwo.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent arg0) { 
       c1.show(panelContainer,"3");      
      }    
     }); 
     RadioButtons(); 
     Button(); 
     frame.add(panelContainer); 
     frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
     frame.pack(); 
     frame.setSize(600,360); 
     frame.setVisible(true); 
    } 

    public void RadioButtons() { 
     btLdap = new JRadioButton ("Ldap"); 
     btLdap.setBounds(60,85,100,20); 
     panelFirst.add(btLdap);   
     btKerbegos = new JRadioButton ("Kerbegos"); 
     btKerbegos.setBounds(60,115,100,20); 
     panelFirst.add(btKerbegos);   
     btSpnego =new JRadioButton("Spnego"); 
     btSpnego.setBounds(60,145,100,20); 
     panelFirst.add(btSpnego); 
        btSaml2 = new JRadioButton("Saml2"); 
     btSaml2.setBounds(60,175,100,20); 
     panelFirst.add(btSaml2); 
    } 

    public void Button() { 
     btNext.setBounds(400,260,100,20); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       new MyWizard(); 
      } 
     }); 
    }  
} 
+0

потому что вы используете 'LayoutManager' – nachokk

+0

, как это исправить? Если я возьму .setLayout, то все это не сработает –

+0

Я получаю эту ошибку Если я беру это исключение из потока «AWT-EventQueue-0» java.lang.IllegalArgumentException: неверный родитель для CardLayout –

ответ

2

Предполагая, что panelFirst является (или простирается от) что-то вроде JPanel, он будет находиться под контролем менеджера компоновки (в данном случае, скорее всего, в FlowLayout).

Настоятельно рекомендуется избегать setBounds, setLocation и setSize и вместо того, чтобы полагаться на менеджеров компоновки

Графические интерфейсы необходимы для работы на различных платформах, каждая с уникальными свойствами рендеринга. Для решения этой проблемы разработчики Java/Swing/AWT разработали API LayoutManager. Это делает его легче разрабатывать сложные пользовательские интерфейсы, которые будут работать на нескольких различных платформах

Посмотрите на Using Layout Managers и A Visual Guide to Layout Managers

1

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

JPanel p = new JPanel(); 
p.setLayout(new BoxLayout(p,BoxLayout.Y_AXIS)); 

p.add(...); 
//then add p to the fram's container or to some other container 
Смежные вопросы