panel中的JTextField为什么显示不了?

vivi_2012 2013-11-22 01:33:20
import java.awt.Dimension;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.WindowConstants;


public class JTextFieldTest extends JFrame
{
public JTextFieldTest(){
setSize(new Dimension(300,150));
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setVisible(true);

}

public static void main(String[] args)
{
JTextFieldTest test=new JTextFieldTest();
JPanel panel=new JPanel();
JTextField field=new JTextField();
field.setColumns(10);
panel.add(field);

test.setContentPane(panel);
}

}
问题:
这样写代码,窗口上的JTextField显示不出来,要把鼠标在窗口的边框上点击或者拖拽一下才能显示。
但是如果代码改成如下这样,运行程序就可以马上显示。这是为什么呢?
public class JTextFieldTest extends JFrame
{
public JTextFieldTest(){

JPanel panel=new JPanel();
JTextField field=new JTextField();
field.setColumns(10);
panel.add(field);

setContentPane(panel);
}

public static void main(String[] args)
{
JTextFieldTest test=new JTextFieldTest();
test.setSize(new Dimension(300,150));
test.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
test.setVisible(true);

}

}
...全文
645 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
fei0826 2013-11-22
  • 打赏
  • 举报
回复 1
因为你第一种写法是先用setVisible(true)显示框架,再用test.setContentPane(panel)将jtextfield组件加进来的。所以只要将setVisible(true)这句话写在后面就可以了。

51,396

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧