改变AWT文本框的边框颜色

13

在AWT应用程序中,我需要设置TextField的边框颜色。

对于JTextField,我知道我们可以执行以下操作:

JTextField tf = new JTextField();
tf.setBorder(BorderFactory.createLineBorder(Color.decode("#2C6791")));

但是在awt TextField中没有setBorder()方法。有没有解决这个问题的方法?

5个回答

9
AWT的TextField不支持边框,正如你所发现的。你可以通过将文本字段放置在略大于文本字段大小的Panel中,并更改Panel的背景色来模拟边框。

1
谢谢,但是文本字段默认带有略微朝内侧的灰色边框...我想我没法去掉它了吗? - tiger
+1 我本来想建议重写 paint(),但这看起来更容易。 - trashgod

2
tf.setBorder(new LineBorder(Color.red,1));
//new LineBorder(color,width);

2
请添加一些解释。仅仅将代码片段作为答案是一个不好的做法。 - Valdi_Bo

2
tf.setBorder(new LineBorder(Color.red,1));
//new LineBorder(color,width);

因为该方法是重载的,所以您可以定义颜色,并将其余部分保留为默认值。 或者,您可以定义整个方法并选择颜色、线条厚度和角落类型;圆形或非圆形。最初的回答。
    public LineBorder(Color color) {
        this(color, 1, false);
    }
    public LineBorder(Color color, int thickness)  {
        this(color, thickness, false);
    }
    @ConstructorProperties({"lineColor", "thickness", "roundedCorners"})
    public LineBorder(Color color, int thickness, boolean roundedCorners)  {
        lineColor = color;
        this.thickness = thickness;
        this.roundedCorners = roundedCorners;
    }

2
为了与外观变化兼容,setBorder() API建议如下:“通常情况下,当您想要在标准Swing组件上设置边框而不是JPanelJLabel时,我们建议您将组件放置在JPanel中,并在JPanel上设置边框。”
补充说明:虽然这提供了一种方法,但对于纯AWT应用程序无关。

AWT TextField 不继承自JComponent - Barend

0
创建一条指定颜色和宽度的线边框。
Border border = BorderFactory.createLineBorder(Color.BLUE, 5);

设置此组件的边框

 JTextField.setBorder(border);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接