Java JTextBox在被单击之前不会显示在JFrame中。为什么?

Java JTextBox在被单击之前不会显示在JFrame中。为什么?,java,swing,jtextfield,Java,Swing,Jtextfield,我正在制作一个程序,我需要在我的JPanel中制作一个JTextField,它在我的JFrame中。 一切都设置为可见。我可以在相同的JPanel中看到JLabel,但不能看到我的JTextField 当我启动代码时,我的JTextField仅在单击时显示。当我将光标移到它上面时,它会变为“我知道它在那里”。但它就像我的JFrame背景色 import java.awt.Dimension; import javax.swing.JTextField; public class HomeSou

我正在制作一个程序,我需要在我的
JPanel
中制作一个
JTextField
,它在我的
JFrame
中。 一切都设置为可见。我可以在相同的
JPanel
中看到
JLabel
,但不能看到我的
JTextField

当我启动代码时,我的
JTextField
仅在单击时显示。当我将光标移到它上面时,它会变为“我知道它在那里”。但它就像我的
JFrame
背景色

import java.awt.Dimension;
import javax.swing.JTextField;

public class HomeSourceTextBox extends JTextField {

private static final long serialVersionUID = -3387184252168604673L;
Dimension d = new Dimension(600, 20);

public HomeSourceTextBox() {
    setSize(d);
    setEnabled(true);
    setText("Text");

    setVisible(true);
   }
}

我不确定您在做什么,但我认为您正在尝试使
JTextField
更长

要为
JTextField
提供默认列数,请使用如下构造函数:

JTextField jtf=new JTextField(10);
正如其他人所建议的,请发一篇帖子,这样我们可以看到具体的问题

一般来说,最好覆盖
get | Minimum | Maximum | Preferred | Size
set | Minimum | Maximum | Preferred | Size
,这样
LayoutManager
s就不能更改大小了(如果您没有使用
布局,我强烈建议您这样做)

我更喜欢
getPreferredSize()
,文档也同意-

getPreferredSize()

返回此文本字段所需的首选尺寸标注。如果已设置非零列数,则宽度将设置为 列乘以列宽


如果设置适当的长度不起作用

您可以尝试(重新)验证文本框所在的容器。
听起来像是对象树在那里,但是画布没有被更新。在容器(在您的例子中是JPanel)上调用repaint()或validate()(也调用repaint())将强制重新绘制。

示例代码无法提供答案。post用于将其添加到JFrame的代码在哪里?是否确实需要将
JTextField
子类化?如果你在一个普通的
JTextField
中偶然发现这些属性,它会起作用吗?like
JTextfield txtf=新的JTextfield(text);TXTF.SETSIZE(…)您应该考虑使用布局管理器而不是用硬编码的大小。调用Debug()或“验证”((也调用RePrror())),如我所知的“代码>验证())/代码>不调用<代码> RePrimeTo()/<代码>,反之亦然。这就是为什么我们必须同时调用它们,即
validate();重新油漆()才能反映更改。这只适用于添加到Already可视容器中的情况。你完全正确,只需仔细检查jdk源代码。。。我的错,是的。我只需要设置我想要在文本字段中设置多少列。因为我制作了构造函数中的所有代码,所以没有设置它。