0

У меня есть этот код, который, кажется, бросает исключение IllegalComponentException, и я не уверен, почему. Она сводится к этим линиям кода:BoxLayout не работает?

JRadioButton setRed = new JRadioButton(“Red", true); 
JRadioButton setBlue = new JRadioButton("Blue", false); 
JRadioButton setYellow = new JRadioButton("Yellow", false); 
JPanel options = new JPanel(); 
options.add(setBlue, BoxLayout.Y_AXIS);//error here 
options.add(setRed, BoxLayout.Y_AXIS);//and probably here too 
options.add(setYellow, BoxLayout.Y_AXIS);//and here 

Здесь ошибка:

Exception in thread "main" java.lang.IllegalArgumentException: illegal component position 
    at java.awt.Container.addImpl(Container.java:1034) 
    at java.awt.Container.add(Container.java:406) 
    at DrawCanvas.go(DrawCanvas.java:42) 
    at DrawCanvas.main(DrawCanvas.java:27) 

ответ

2

Ваш код не имеет смысла. Вы не используете константы BoxLayout при добавлении компонентов в JPanel, а используете константы при создании объекта BoxLayout, чего вы еще не сделали.

Вам нужно:

  • Создание объекта BoxLayout используя константу соответствующий BoxLayout, и передавая ссылку на контейнер, который будет использовать этот макет.
  • Установите макет JPanel на этот объект
  • Добавьте свои компоненты в JPanel без констант.
  • Самое главное, вам нужно прочитать учебное пособие, так как очевидно, что вы пытаетесь использовать этот инструмент, не сначала проверяя этот важный ресурс. Вы не можете догадаться об этом и ожидать, что он сработает.

Google: Java BoxLayout tutorial. Первый удар.

+0

Ой, я слишком много использовал BorderLayout ... – thecoder16