【发布时间】:2017-06-15 04:02:25
【问题描述】:
我的 JTextField 没有显示,只有paintComponent
public static final int WIDTH = 800;
public static final int HEIGHT = 600;
private JTextField txt;
public Painel(){
super();
setFocusable(true);
setPreferredSize(new Dimension(WIDTH, HEIGHT));
setLayout(new FlowLayout());
txt = new JTextField();
txt.setBounds(400, 300, 50, 20);
}
【问题讨论】:
-
您所做的只是创建了一个
JTextField对象,您从未以任何方式将其添加到您的面板中。 -
而
setBounds在布局管理器的控制下将毫无意义 -
这个
setLayout(new FlowLayout());和这个txt.setBounds(400, 300, 50, 20);不兼容。文本字段的位置由布局(+ 布局填充和边框)控制。文本字段的大小部分取决于布局,也取决于为其设置的列数和字体大小。 -
编程语言非常愚蠢——它们只做你告诉他们的事情,所以如果你创建了一个组件但不将它添加到任何东西上,Java 不会神奇地将你的组件添加到任何东西上。更重要的是,您询问的是 Swing 组件的使用,但通过这个问题表明您没有先查看教程,在提出此类问题之前您应该始终这样做。您真的不想使用“猜测程序”作为创建程序的启发式方法。真的。
-
@HovercraftFullOfEels 虽然 "program by guessing" 更准确,但我更愿意将其视为“魔术编程”。从头到尾都很棒的评论。
标签: java swing jpanel jtextfield