在JDialog中添加组件时出错

时间:2018-05-24 20:56:43

标签: java swing layout netbeans jslider

我创建了一个input mobile? 7.358681129E9 ,其中包含组件(JDialog s,JLabel s,JButton s等),我还有另一个JTextField分开从那开始,我希望将一些组件放到第一个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

1 个答案:

答案 0 :(得分:1)

org.netbeans.lib.awtextra.AbsoluteConstraints(50, 410, 250, -1));

我猜“-1”会有问题。

我不使用AbsoluteLayout,但我认为该值应代表组件的“高度”。

在任何情况下,您都可以阅读AbsoluteConstraints类的API,以找出该参数应该是什么。

我真正的建议是不要使用AbsoluteLayout或IDE的表单生成器。 Swing旨在与布局管理器一起使用,因此您应该使用布局管理器(或布局管理器)创建表单,并根据您的要求进行布局。

阅读Layout Managers上Swing教程中的部分,了解更多信息和工作示例,以帮助您入门。