java - 在 JDialog 中添加组件时出错

标签 java swing layout netbeans jslider

我创建了一个 JDialog,其中包含组件(JLabelJButtonJTextField 等),除此之外,我还有另一个 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));

我想使用第一个 JDialog 中的 JSlider 组件执行此操作,但我收到了上述错误......

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

最佳答案

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

我猜“-1”会是一个问题。

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

无论如何,您都可以阅读 AbsoluteConstraints 类的 API,以了解参数应该是什么。

我真正的建议是不要使用 AbsoluteLayout 或 IDE 的表单生成器。 Swing 被设计为与布局管理器一起使用,因此您应该使用布局管理器(或多个布局管理器)创建表单,它将根据您的要求进行布局。

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

关于java - 在 JDialog 中添加组件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50518054/

相关文章:

Java JFrame 失去焦点时显示初始化内容

java - 将值从一个 jInternalFrame 传递到另一个 jInternalFrame

java - Prototype Bean 中的 Autowiring

java - JList水平自动滚动到右侧

javascript - 以不同的布局加载更多帖子

java - 从 ArrayList<int[]> 中删除 int[]

java - 关于 Java 中的 clone() 、对象类和 Cloneable 接口(interface)的混淆

layout - 如何在 yii 中将数组从 Controller 发送到布局 header ?

java - 安卓 : import libraries Like PhotoView

layout - pdflatex中的页边距变化