gpt4 book ai didi

java - Swing...添加 JTextField 会清空我的 JPanel

转载 作者:行者123 更新时间:2023-11-30 03:11:32 26 4
gpt4 key购买 nike

遇到一个奇怪的问题。我现在正在学习Java Swing,并且有一个具有设定大小的基本框架。我添加了按钮,然后添加了单选按钮,一切都很好。我添加了一个 JTextField,框架上的所有内容都变成空白,直到我手动调整它的大小,然后所有内容都会出现。我尝试过使用 Grids 和 GridBagConstraints ,但似乎没有任何帮助,但我还没有很好地处理这些问题。我相信所有东西的大小都是正确的,但是盒子打开时是空白的,然后当我在任何方向上改变大小,即使是一个像素,一切都显示得很好。

这是迄今为止我的代码:

import javax.swing.*;

import java.awt.*;

public class Test {

private JFrame f; //frame
private JPanel p; //window
private JButton b1; //button
private JButton b2; //button
private JButton b3; //button
private JButton b4; //button
private JRadioButton rad1;
private JRadioButton rad2;
private String radBut1 = "Checking";
private String radBut2 = "Savings";
private JTextField textField;


public Test(){

gui();

}

public void gui(){

f = new JFrame("ATM Machine");
f.setVisible(true);
f.setSize(350,200);
f.setLocationRelativeTo(null);
//f.setResizable(false);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

p = new JPanel();

b1 = new JButton("Withdraw From");
b2 = new JButton("Deposit To");
b3 = new JButton("Transfer To");
b4 = new JButton("Balance Of");

b1.setPreferredSize(new Dimension(150,25));
b2.setPreferredSize(new Dimension(150,25));
b3.setPreferredSize(new Dimension(150,25));
b4.setPreferredSize(new Dimension(150,25));

p.add(b1);
p.add(b2);
p.add(b3);
p.add(b4);

rad1 = new JRadioButton(radBut1);
rad2 = new JRadioButton(radBut2);






ButtonGroup radioGroup = new ButtonGroup();
radioGroup.add(rad1);
radioGroup.add(rad2);

p.add(rad1);
p.add(rad2);

textField = new JTextField(25);

p.add(textField);


f.add(p);




}

public static void main(String[] args) {

new Test();


}

}

所以基本上它需要看起来像顶部有 2 个按钮,这些按钮下面有 2 个按钮,下面有 2 个单选按钮,最后是单选按钮下面的 TextField。

如果有任何帮助,我将不胜感激。

谢谢!

最佳答案

在使框架可见之前,应将组件添加到框架中。

f = new JFrame("ATM Machine");
//f.setVisible(true);
...
f.add(p);
f.setVisible(true);

and have a basic frame with a set size.

不要设置框架的大小。让 Swing 确定每个组件的大小和框架的大小。所以实际上代码应该是:

f.add(p);
f.pack();
f.setVisible(true);

不要设置按钮的preferredSize()。如果您希望所有按钮具有相同的大小,请在单独的面板上使用 GridLayout:

JPanel buttons = new JPanel( new GridLayout(0, 4) );
buttons.add(b1);
buttons.add(b2);
...

然后将按钮面板添加到框架中。

此外,您需要更改布局管理器。现在您正在使用 FlowLayout,并且该布局似乎只能正常工作。如果调整框架的大小,组件将流到另一行。也许您需要使用 BoxLayout

阅读 Using Layout Manager 上的 Swing 教程了解更多信息。

关于java - Swing...添加 JTextField 会清空我的 JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33534819/

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