【问题标题】:Changing Border Color of AWT TextField更改 AWT TextField 的边框颜色
【发布时间】:2011-09-28 11:05:30
【问题描述】:

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

在 JTextField 中,我知道我们确实可以做到以下几点

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

但是 setBorder() 方法在 awt TextField 中不可用。这个问题有解决办法吗?

【问题讨论】:

    标签: java swing awt textfield border


    【解决方案1】:

    正如您所发现的,AWT TextField 不支持边框。您可以通过将文本字段放在比文本字段稍大的 Panel 中并更改面板的背景颜色来模拟边框。

    【讨论】:

    • 谢谢,但是 TextFields 在文本框的内侧有轻微的默认灰色阴影边框..我想我无法摆脱它?
    • +1 我本来建议覆盖paint(),但这看起来更容易。
    【解决方案2】:

    为了与外观变化的兼容性,setBorder() API 建议如下:“通常,当您想要在除JPanelJLabel 之外的标准 Swing 组件上设置边框时,我们建议您将组件放在JPanel 中,并在JPanel 上设置边框。”

    附录:虽然这提出了一种方法,但它与纯 AWT 应用程序无关。

    【讨论】:

    • AWT TextField 不继承自 JComponent
    【解决方案3】:
    tf.setBorder(new LineBorder(Color.red,1));
    //new LineBorder(color,width);
    

    【讨论】:

    • 请添加一些解释。仅将代码片段作为答案是一种不好的做法。
    【解决方案4】:
    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;
        }
    

    【讨论】:

      【解决方案5】:

      创建具有指定颜色和宽度的线条边框

      Border border = BorderFactory.createLineBorder(Color.BLUE, 5);
      

      设置这个组件的边框

       JTextField.setBorder(border);
      

      【讨论】:

        猜你喜欢
        • 2019-12-23
        • 2018-10-11
        • 2019-11-23
        • 2019-03-25
        • 1970-01-01
        • 1970-01-01
        • 2021-12-07
        • 1970-01-01
        • 2019-06-29
        相关资源
        最近更新 更多