gpt4 book ai didi

java - 在我的框架中使用 GroupLayout

转载 作者:行者123 更新时间:2023-12-01 13:38:36 29 4
gpt4 key购买 nike

public static class MyDictionaryFrame extends JFrame {
public MyDictionaryFrame() {
JLabel label = new JLabel("Enter a word");
JTextField searchTF = new JTextField(10);


GroupLayout layout = new GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setAutoCreateGaps(true);
layout.setAutoCreateContainerGaps(true);

layout.setVerticalGroup(layout.createSequentialGroup().addGroup(
layout.createParallelGroup(BASELINE).addComponent(label)
.addComponent(searchTF)));
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 500);
setTitle("fdf");

}
}

public static void main(String args[]) {
new MyDictionaryFrame().setVisible(true);
}
}

我找不到我的代码崩溃的地方。现在我正在尝试学习 GroupLayout 但目前还没有成功。

Exception in thread "main" java.lang.IllegalStateException:
javax.swing.JTextField[,0,0,0x0,invalid,layout=javax.swing.plaf.basic.BasicTextUI$UpdateHandler,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource@7cf02bee,flags=296,maximumSize=,minimumSize=,preferredSize=,caretColor=sun.swing.PrintColorUIResource[r=51,g=51,b=51],disabledTextColor=javax.swing.plaf.ColorUIResource[r=184,g=207,b=229],editable=true,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],selectedTextColor=sun.swing.PrintColorUIResource[r=51,g=51,b=51],selectionColor=javax.swing.plaf.ColorUIResource[r=184,g=207,b=229],columns=1,columnWidth=0,command=,horizontalAlignment=LEADING] is not attached to a horizontal group
at javax.swing.GroupLayout.checkComponents(GroupLayout.java:1086)
at javax.swing.GroupLayout.prepare(GroupLayout.java:1040)
at javax.swing.GroupLayout.preferredLayoutSize(GroupLayout.java:878)
at java.awt.Container.preferredSize(Container.java:1788)
at java.awt.Container.getPreferredSize(Container.java:1773)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1662)
at javax.swing.JRootPane$RootLayout.preferredLayoutSize(JRootPane.java:917)
at java.awt.Container.preferredSize(Container.java:1788)
at java.awt.Container.getPreferredSize(Container.java:1773)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1662)
at java.awt.BorderLayout.preferredLayoutSize(BorderLayout.java:719)
at java.awt.Container.preferredSize(Container.java:1788)
at java.awt.Container.getPreferredSize(Container.java:1773)
at java.awt.Window.pack(Window.java:809)
at blb.hygh$MyDictionaryFrame.<init>(hygh.java:30)
at blb.hygh.main(hygh.java:39)

最佳答案

当我测试它时,它说

IllegalStateException .. JLabel .. is not attached to a horizontal group

看起来您还需要添加一个水平组,而不仅仅是一个垂直组

运行这个独立程序,添加水平组,它可以工作

import javax.swing.GroupLayout;
import static javax.swing.GroupLayout.Alignment.BASELINE;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class MyDictionaryFrame extends JFrame {

public MyDictionaryFrame() {
JLabel label = new JLabel("Enter a word");
JTextField searchTF = new JTextField(10);

GroupLayout layout = new GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setAutoCreateGaps(true);
layout.setAutoCreateContainerGaps(true);


layout.setHorizontalGroup(layout.createSequentialGroup().addGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(label)
.addComponent(searchTF)));

layout.setVerticalGroup(layout.createSequentialGroup().addGroup(
layout.createParallelGroup(BASELINE).addComponent(label)
.addComponent(searchTF)));
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 500);
setTitle("fdf");

}

public static void main(String args[]) {
new MyDictionaryFrame().setVisible(true);
}
}
<小时/>

更新 - 有效

import javax.swing.GroupLayout;
import static javax.swing.GroupLayout.Alignment.BASELINE;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class MyDictionaryFrame extends JFrame {

public MyDictionaryFrame() {
JLabel label = new JLabel("Enter a word");
JTextField searchTF = new JTextField(10);

GroupLayout layout = new GroupLayout(getContentPane());
getContentPane().setLayout(layout);
//layout.setAutoCreateGaps(true);
//layout.setAutoCreateContainerGaps(true);


layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(label)
.addGap(0, 0, Short.MAX_VALUE))
.addComponent(searchTF, javax.swing.GroupLayout.DEFAULT_SIZE, 376, Short.MAX_VALUE))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(label)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(searchTF, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(246, Short.MAX_VALUE))
);
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 500);
setTitle("fdf");

}

public static void main(String args[]) {
new MyDictionaryFrame().setVisible(true);
}
}

关于java - 在我的框架中使用 GroupLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21040273/

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