这是我的密码:
package darkorbit;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.util.concurrent.TimeUnit;
import javax.swing.GroupLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.WindowConstants;
public class GuiPreparation extends JFrame{
private JCheckBox cbbt = new JCheckBox("Wait");
private JTextField tfbt = new JTextField(5);
private JLabel mbt = new JLabel("-");
private JTextField tfbt1 = new JTextField(5);
private JLabel lbt = new JLabel("miliseconds after collecting a box.");
private JCheckBox cbr = new JCheckBox("Rest");
private JTextField tfr = new JTextField(5);
private JLabel mr = new JLabel("-");
private JTextField tfr1 = new JTextField(5);
private JLabel lr = new JLabel("seconds every");
private JTextField tfr2 = new JTextField(5);
private JLabel mr1 = new JLabel("-");
private JTextField tfr3 = new JTextField(5);
private JLabel lr1 = new JLabel("minutes.");
private JButton startBotting = new JButton("Start Botting");
private int controlWidth = 500;
private int controlHeight = 600;
GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
int screenWidth = gd.getDisplayMode().getWidth();
int screenHeight = gd.getDisplayMode().getHeight();
private GuiPreparation(){
setVisible(true);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setBounds(screenWidth / 2 - controlWidth / 2, screenHeight / 2 - controlHeight / 2, controlWidth, controlHeight);
eventStartBotting startBottingEvent = new eventStartBotting();
startBotting.addActionListener(startBottingEvent);
//startBotting.setBounds(controlWidth / 2 - 100 / 2, controlHeight - 70, 100, 30);
//Layout
add(startBotting);
add(cbbt);
add(tfbt);
add(mbt);
add(tfbt1);
add(lbt);
GroupLayout layout = new GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setAutoCreateGaps(true);
layout.setAutoCreateContainerGaps(true);
layout.setHorizontalGroup(
layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.CENTER)
.addComponent(cbbt))
.addComponent(tfbt)
.addComponent(mbt)
.addComponent(tfbt1)
.addComponent(lbt)
);
layout.setVerticalGroup(
layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.CENTER)
.addComponent(cbbt)
.addComponent(tfbt)
.addComponent(mbt)
.addComponent(tfbt1)
.addComponent(lbt))
);
layout.linkSize(SwingConstants.VERTICAL, tfbt);
layout.linkSize(SwingConstants.VERTICAL, tfbt1);
//Layout1
add(cbr);
add(tfr);
add(mr);
add(tfr1);
add(lr);
add(tfr2);
add(mr1);
add(tfr3);
add(lr1);
GroupLayout layout1 = new GroupLayout(getContentPane());
getContentPane().setLayout(layout1);
layout1.setAutoCreateGaps(true);
layout1.setAutoCreateContainerGaps(true);
layout1.setHorizontalGroup(
layout1.createSequentialGroup()
.addGroup(layout1.createParallelGroup(GroupLayout.Alignment.CENTER)
.addComponent(cbr))
.addComponent(tfr)
.addComponent(mr)
.addComponent(tfr1)
.addComponent(lr)
.addComponent(tfr2)
.addComponent(mr1)
.addComponent(tfr3)
.addComponent(lr1)
);
layout1.setVerticalGroup(
layout1.createSequentialGroup()
.addGap(50)
.addGroup(layout1.createParallelGroup(GroupLayout.Alignment.CENTER)
.addComponent(cbr)
.addComponent(tfr)
.addComponent(mr)
.addComponent(tfr1)
.addComponent(lr)
.addComponent(tfr2)
.addComponent(mr1)
.addComponent(tfr3)
.addComponent(lr1))
);
layout1.linkSize(SwingConstants.VERTICAL, tfr);
layout1.linkSize(SwingConstants.VERTICAL, tfr1);
layout1.linkSize(SwingConstants.VERTICAL, tfr2);
layout1.linkSize(SwingConstants.VERTICAL, tfr3);
}
public class eventStartBotting implements ActionListener {
public void actionPerformed(ActionEvent startBottingActionEvent) {
System.out.println("Event Start Botting");
startBotting.setEnabled(false);
GuiBotting.openGui();
setVisible(false);
dispose();
}
}
public static void openGui() {
GuiPreparation mainGUI = new GuiPreparation();
mainGUI.setVisible(true);
}
}因此,当我运行gui (openGui())时,它运行得很顺利,我得到了我想要的:

但是,我更改(例如)setReziseable(真)而不是false,并运行它,我得到如下结果:

当我把它放回原处时,我得到了同样的感觉。
为了再次得到我想要的gui,我必须按Ctrl+z,直到它恢复到原来的样子为止。
有时候,即使我没有改变任何东西,我也会得到一个奇怪的
这些都是例子,你可以通过改变任何东西来得到这些奇怪的东西,即使代码完全相同,也会得到不同的结果。
这是两个布局的使用吗?是因为它没有正确关闭吗?如果重要的话,我使用Eclipse。
发布于 2013-11-15 18:13:53
我没有得到你的第一张照片,无论大小的设置。
添加组件的次数太多了--在将组件添加到GroupLayout布局(一次是水平的,一次是垂直的)之后,它们也不需要添加到内容窗格--删除所有不使用GroupLayout的add()方法。
而且,一次只有一个布局连接到您的JFrame --当您将layout1设置为内容窗格布局时,您将替换以前设置的布局。要么将所有组件放在一个布局中,要么为两个垂直部分中的每一个设置一个JPanel,设置为GroupLayout,然后将两个JPanels放到另一个JPanel中,然后将这个JPanels设置为JFrame的中心(您可以将其中一个放置向北,一个中心,但如果允许用户更改帧大小,则它们会不同地拉伸)。
https://stackoverflow.com/questions/20006627
复制相似问题