Ошибка добавления компонента в JDialog - PullRequest
0 голосов

Я создал JDialog, который имеет компоненты (JLabel s, JButton s, JTextField s и т. Д.), И у меня есть еще JDialog помимо этого, который я хочу иметь некоторые изкомпоненты к первому JDialog, поэтому во втором JDialog я пытался добавить компоненты, используя метод .add(), но при запуске программы произошла ошибка ....

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException
    at org.netbeans.lib.awtextra.AbsoluteLayout.addLayoutComponent(Unknown 
Source)
at java.awt.Container.addImpl(Container.java:1127)
at java.awt.Container.add(Container.java:1005)
at javax.swing.JDialog.addImpl(JDialog.java:921)
at java.awt.Container.add(Container.java:417)
at mainJFrame.initComponents(mainJFrame.java:721)
at mainJFrame.<init>(mainJFrame.java:30)
at mainJFrame.lambda$main$0(mainJFrame.java:1980)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Я помещу часть кода, в частности ту часть, где я получаю сообщение об ошибке.

   private void initComponents() {
          practiceModeConfig = new javax.swing.JDialog(this);

          //Here it supossed to go the declarations of the swings components 
          //(JLabels, Buttons,...) everything here is correct, so i dont 
          // want to put on here....

          practiceModeConfig.setUndecorated(true); 
          practiceModeConfig.setDefaultCloseOperation(
         javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
         practiceModeConfig.setBackground(new java.awt.Color(242, 176, 53));
         practiceModeConfig.setBounds(new java.awt.Rectangle(444, 308, 0, 
         0));
         practiceModeConfig.setSize(new java.awt.Dimension(400, 300));
         practiceModeConfig.getContentPane().setLayout(new 
         org.netbeans.lib.awtextra.AbsoluteLayout());

         //This is a JSlider that i want to add in the next JDialog

         practiceModeConfig.getContentPane().add(Slider, new 
         org.netbeans.lib.awtextra.AbsoluteConstraints(50, 410, 250, -1));

         //And this is the other JDialog....

         testModeConfig = new javax.swing.JDialog(this);
         testModeConfig.setUndecorated(true);
         testModeConfig.getContentPane().setLayout(new 
            org.netbeans.lib.awtextra.AbsoluteLayout());
         testModeConfig.setDefaultCloseOperation(
         javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
         testModeConfig.setBackground(new java.awt.Color(242, 176, 53));
         testModeConfig.setBounds(new java.awt.Rectangle(444, 308, 0, 
         0));

Я хочу сделать это с компонентом JSlider из первого JDialog, но яВы получили указанную ошибку ....

         testModeConfig.getContentPane().add(Slider, new 
         org.netbeans.lib.awtextra.AbsoluteConstraints(50, 410, 250, -1));

1 Ответ

0 голосов
/ 24 мая 2018
org.netbeans.lib.awtextra.AbsoluteConstraints(50, 410, 250, -1));

Я бы предположил, что "-1" будет проблемой.

Я не использую AbsoluteLayout, но я думаю, что это значение должно представлять «высоту» компонента.

В любом случае вы можете прочитать API для класса AbsoluteConstraints, чтобы узнатькакими должны быть эти параметры.

Мое реальное предложение - не использовать AbsoluteLayout или генератор форм вашей IDE.Swing был разработан для использования с менеджерами компоновки, поэтому вы должны создавать свои формы с помощью диспетчера компоновки (или менеджеров компоновки), который будет выполнять компоновку в соответствии с вашими требованиями.

Прочитайте раздел из учебника Swing на Менеджеры по макету для получения дополнительной информации и рабочих примеров для начала работы.

...