BoxLayout не может быть общей ошибкой

У меня есть этот Java JFrame class, в котором я хочу использовать boxlayout, но я получаю сообщение об ошибке java.awt.AWTError: BoxLayout can't be shared . Я видел других с этой проблемой, но они решили это, создав boxlayout на contentpane, но это то, что я здесь делаю. Вот мой код:

 class edit_dialog extends javax.swing.JFrame{ javax.swing.JTextField title = new javax.swing.JTextField(); public edit_dialog(){ setDefaultCloseOperation(javax.swing.JFrame.DISPOSE_ON_CLOSE); setTitle("New entity"); getContentPane().setLayout( new javax.swing.BoxLayout(this, javax.swing.BoxLayout.PAGE_AXIS)); add(title); pack(); setVisible(true); } } 

Ваша проблема в том, что вы создаете BoxLayout для JFrame ( this ), но устанавливаете его как макет для JPanel ( getContentPane() ). Пытаться:

 getContentPane().setLayout( new BoxLayout(getContentPane(), BoxLayout.PAGE_AXIS) ); 

Я также нашел эту ошибку:

 JPanel panel = new JPanel(new BoxLayout(panel, BoxLayout.PAGE_AXIS)); 

JPanel еще не инициализируется при передаче его в BoxLayout. Так разделите эту строку следующим образом:

 JPanel panel = new JPanel(); panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS)); 

Это сработает.

Я думаю, что одна важная вещь, которую следует выделить из предыдущих ответов, состоит в том, что цель BoxLayout (первый параметр) должна быть тем же Контейнером, на который вызывается метод setLayout, как в следующем примере:

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

Если вы используете макет на JFrame например:

 JFrame frame = new JFrame(); frame.setLayout(new BoxLayout(frame, BoxLayout.Y_AXIS)); frame.add(new JLabel("Hello World!")); 

Элемент управления фактически добавляется в ContentPane поэтому он будет выглядеть так, как будто он «разделен» между JFrame и ContentPane

Сделайте это вместо этого:

 JFrame frame = new JFrame(); frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS)); frame.add(new JLabel("Hello World!")); 
  • Как получить изображение из папки проекта?
  • Как изменить цвет подсветки сфокусированного JComboBox
  • Как имитировать буферизованное периферийное устройство с SwingWorker?
  • Какова цель использования менеджеров макетов Java?
  • Создание надежного масштабируемого графического интерфейса Swing Chess
  • Как создать контекстное меню правой кнопки мыши в Java Swing?
  • «Всегда поверх» Windows с Java
  • Почему вы не должны расширять JFrame и другие компоненты?
  • Добавление нескольких JProgressBar в TableColumn JTable
  • Как я могу запустить панель задач Windows с помощью Swing?
  • Динамические JComboBoxes
  • Interesting Posts

    Есть ли способ проверить, является ли int законным перечислением в C #?

    Сколько времени ожидает отсроченный сервис?

    Пересылка определенных портов через реверсовые туннели SSH

    Установка образа libv8 на OS X 10.9+

    Установка ОС Windows из другой системы Windows

    Как отменить этот повторяющийся сигнал?

    Sqlite над сетевым ресурсом

    Лучший способ синхронизации локальной базы данных HTML5 (WebSQL Storage, SQLite) с сервером (двухсторонняя синхронизация)

    безгласный интернет-браузер?

    Получение общедоступного изображения google / gmail пользователя

    Похоже, что привязки данных не обновляются

    В чем разница между «методом classа» и «статическим методом»?

    Скрыть открытые ярлыки на рабочем столе без административных привилегий

    Что означает «http: // * / *», «https: // * / *» и «» означает в контексте разрешений расширения Chrome

    Задайте переменную пути с пробелами в пути в файле .cmd Windows или пакетном файле

    Давайте будем гением компьютера.