gpt4 book ai didi

java - 组布局错误: can't find the wrong line in my code

转载 作者:行者123 更新时间:2023-12-01 12:24:45 27 4
gpt4 key购买 nike

我正在尝试制作一个 GroupLayout,但每次编译时都会出现错误。我在代码中找不到错误的行,在我看来是正确的。为什么我会收到这些错误?

构造函数中的代码(扩展 JFrame):

mem_settings = new JPanel();

lbl_mem_settings = new JLabel("Memory settings");
lbl_mem_select = new JLabel("Type");
cb_mem_select = new JComboBox(new String[] {"24C01","24C02","24C04"});


// Layout
GroupLayout GL = new GroupLayout(mem_settings);
mem_settings.setLayout(GL);
GL.setAutoCreateGaps(true);
GL.setAutoCreateContainerGaps(true);

GL.setHorizontalGroup(GL.createSequentialGroup()
.addGroup(GL.createParallelGroup(LEADING)
.addComponent(lbl_mem_settings)
.addComponent(lbl_mem_select))
.addGroup(GL.createParallelGroup(LEADING)
.addComponent(cb_mem_select))
);
GL.setVerticalGroup(GL.createSequentialGroup()
.addGroup(GL.createParallelGroup(BASELINE)
.addComponent(lbl_mem_settings))
.addGroup(GL.createParallelGroup(BASELINE)
.addComponent(lbl_mem_settings)
.addComponent(cb_mem_select))
);

add(mem_settings);
setDefaultCloseOperation(EXIT_ON_CLOSE);
pack();
setVisible(true);

以及我得到的错误:

run:
Exception in thread "main" java.lang.IllegalStateException: javax.swing.JLabel[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=8388608,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,horizontalAlignment=LEADING,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=Type,verticalAlignment=CENTER,verticalTextPosition=CENTER] is not attached to a vertical group
at javax.swing.GroupLayout.checkComponents(GroupLayout.java:1090)
at javax.swing.GroupLayout.prepare(GroupLayout.java:1040)
at javax.swing.GroupLayout.preferredLayoutSize(GroupLayout.java:878)
at java.awt.Container.preferredSize(Container.java:1794)
at java.awt.Container.getPreferredSize(Container.java:1778)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1661)
at java.awt.BorderLayout.preferredLayoutSize(BorderLayout.java:719)
at java.awt.Container.preferredSize(Container.java:1794)
at java.awt.Container.getPreferredSize(Container.java:1778)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1661)
at javax.swing.JRootPane$RootLayout.preferredLayoutSize(JRootPane.java:920)
at java.awt.Container.preferredSize(Container.java:1794)
at java.awt.Container.getPreferredSize(Container.java:1778)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1661)
at java.awt.BorderLayout.preferredLayoutSize(BorderLayout.java:719)
at java.awt.Container.preferredSize(Container.java:1794)
at java.awt.Container.getPreferredSize(Container.java:1778)
at java.awt.Window.pack(Window.java:809)
at memcryp.GUI.<init>(GUI.java:46)
at memcryp.MEMCRYP.main(MEMCRYP.java:20)
BUILD STOPPED (total time: 6 minutes 39 seconds)

最佳答案

但是错误消息很清楚。您名为 lbl_mem_selectJLabel 仅附加到水平组:

GL.setHorizontalGroup(GL.createSequentialGroup()
.addGroup(GL.createParallelGroup(LEADING)
.addComponent(lbl_mem_settings)
.addComponent(lbl_mem_select)) //here you attach the label
.addGroup(GL.createParallelGroup(LEADING)
.addComponent(cb_mem_select))
);

但是,在您的垂直组中,您没有包含该标签。将垂直组的代码更改为

GL.setVerticalGroup(GL.createSequentialGroup()
.addGroup(GL.createParallelGroup(BASELINE)
.addComponent(lbl_mem_settings)
.addComponent(lbl_mem_select)) //add this line
.addGroup(GL.createParallelGroup(BASELINE)
.addComponent(lbl_mem_settings)
.addComponent(cb_mem_select))
);

应该这样做。

话虽这么说……您真的想使用GroupLayout 来手动编写 UI 代码吗?引自 GroupLayout 教程

GroupLayout is a layout manager that was developed for GUI builders such as Matisse, the GUI builder provided with the NetBeans IDE

虽然可以用它来手动编写布局,但它需要大量(不可读的恕我直言)代码来完成。还有其他(第三方)布局管理器更适合手动编码布局。

关于java - 组布局错误: can't find the wrong line in my code,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26452809/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com