2015-11-17 3 views
1

У меня возникли проблемы с запуском моего кода для создания простого опроса. Я только начинаю с пользовательских интерфейсов, и BoxLayout дает мне сообщение об ошибке: Исключение в потоке «AWT-EventQueue-0» java.awt.AWTError: BoxLayout нельзя использовать. Помогите?BoxLayout нельзя использовать с использованием метода «createComponents»

import java.awt.Container; 
import java.awt.Dimension; 
import javax.swing.*; 

public class UserInterface implements Runnable { 

    private JFrame frame; 

    @Override 
    public void run() { 
     frame = new JFrame("Survey"); 

     frame.setPreferredSize(new Dimension(200, 300)); 
     frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 

     createComponents(frame); 
     frame.pack(); 
     frame.setVisible(true); 
    } 

    private void createComponents(Container container) { 
     BoxLayout bl = new BoxLayout(container, BoxLayout.Y_AXIS); 
     container.setLayout(bl); 

     container.add(new JLabel("Are you?")); 
     container.add(new JCheckBox("Yes!")); 
     container.add(new JCheckBox("No!")); 
     container.add(new JLabel("Why?")); 

     JRadioButton one = new JRadioButton("No reason."); 
     JRadioButton two = new JRadioButton("Because it is fun!"); 

     ButtonGroup bg = new ButtonGroup(); 
     bg.add(one); 
     bg.add(two); 

     container.add(one); 
     container.add(two); 

     container.add(new JButton("Done!")); 
    } 

    public JFrame getFrame() { 
     return frame; 
    } 
} 
+1

НИКОГДА НЕ РАЗУМ! Догадаться! Вместо этого я использовал .getContentPane() и переместил метод createComponents() в метод run(). Однако существует ли способ разделить эти два метода? – diego5791

ответ

1

However, is there a way to keep these two methods separate?

Easy: Просто передайте ContentPane в метод.

createComponents(frame.getContentPane()); 
+0

Wow haha ​​спасибо! – diego5791

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

  • Нет связанных вопросов^_^