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

时间:2013-01-02 19:12:15

标签: java swing jtextfield

我正在制作一个程序,我需要在我的JTextField JPanelJFrame制作JLabel。 一切都设置为可见。我可以在同一个JPanel但不是我的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); } } 背景色。

{{1}}

2 个答案:

答案 0 :(得分:2)

我不确定你在做什么,但我认为你试图让JTextField 更长

要使JTextField列为默认列,请使用JTextField(int columns)构造函数,如下所示:

JTextField jtf=new JTextField(10);

正如其他人所建议的那样,请发布SSCCE,以便我们看到具体的问题。

作为一般性说明虽然最好覆盖get|Minimum|Maximum| Preferred |Sizeset|Minimum|Maximum| Preferred |Size,但LayoutManager无法更改大小(如果您没有使用Layout我强烈建议你这样做。)

我更喜欢getPreferredSize()而文档同意 - JTextField docs

  

getPreferredSize()

     

返回此TextField所需的首选大小尺寸。如果已设置非零数量的列,则将宽度设置为   列乘以列宽。

答案 1 :(得分:0)

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

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