在手动拉伸框架之前,TextBox不会显示在框架上

时间:2014-11-30 20:10:27

标签: java swing jframe awt

我正在尝试创建一个登录页面。我为两个文本框和一个按钮编写了代码。用户名旁边有一个文本框,密码旁边有一个文本框。一个"登录"按钮如下。但我不确定为什么我的输出中没有显示文本框和按钮。我只在输出屏幕上显示用户名和密码标签。

奇怪的是,无论何时我拉伸输出框架(我的意思是水平或垂直拉动屏幕)两个文本框都会显示出来。

请检查我的代码,让我知道错误。我试图把图片放到更容易理解但我没有足够的声誉。请帮忙。

import javax.swing.*;
import java.awt.*;

public class HomeScreen{

public static void main(String args[]){

JFrame frame = new JFrame("Medical Store");
frame.setVisible(true);
frame.setSize(600,400);
JPanel panel = new JPanel(new GridBagLayout());
frame.getContentPane().add(panel, BorderLayout.NORTH);

GridBagConstraints c = new GridBagConstraints();

JLabel label1 = new JLabel("Username");
c.gridx = 0;
c.gridy = 0;
c.insets = new Insets(10,10,10,10);
panel.add(label1,c);

JLabel label2 = new JLabel("Password");
c.gridx = 0;
c.gridy = 1;    
panel.add(label2,c);

JTextField textbox1 = new JTextField(10);
c.gridx = 1;
c.gridy = 1;
panel.add(textbox1,c);

JTextField textbox2 = new JTextField(10);
c.gridx = 2;
c.gridy = 1;
panel.add(textbox2,c);

JButton button1 = new JButton("Sign In");
c.gridx = 1;
c.gridy = 2;
panel.add(button1,c);

}   
}

1 个答案:

答案 0 :(得分:2)

您在添加所有组件之前调用setVisible(true) ,因此您的GUI正在执行 ,在添加组件之前绘制自己。< / p>

JFrame frame = new JFrame("Medical Store");
frame.setVisible(true);

// all components added here

解决方案:在添加所有组件后,在结束时进行setVisible(true)来电。

JFrame frame = new JFrame("Medical Store");

// all components added here

frame.setVisible(true);

现在所有组件都应该可视化。

其他狡辩:

  • 避免在任何事情上致电setSize(...)。而是让布局管理器和组件首选大小为您完成。
  • 在将JFrame设置为可见之前调用JFrame上的pack(),以便发生上述情况。