1

我正在制作一个程序,我需要JTextFieldJPanel我的JFrame. 一切都设置为可见。我可以看到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);
   }
}
4

2 回答 2

2

我不确定你在做什么,但我认为你正在努力让JTextField 更长的时间。

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

JTextField jtf=new JTextField(10);

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

作为一般说明,尽管它总是更好地覆盖get|Minimum|Maximum| Preferred |Sizeor set|Minimum|Maximum| Preferred |Size,因此LayoutManager无法更改大小(如果您不使用 aLayout我强烈建议您这样做)。

我更喜欢getPreferredSize()并且文档同意 - JTextField文档

getPreferredSize()

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

于 2013-01-02T19:37:30.143 回答
0

如果设置适当的长度不能解决问题......

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

于 2013-01-02T19:40:18.403 回答