Изменение цвета границы AWT TextField - PullRequest
11 голосов
/ 28 сентября 2011

В приложении AWT мне нужно установить цвет границы TextField.

В JTextField я знаю, что мы можем сделать следующее

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

Но метод setBorder () недоступенв AWT TextField.Есть ли решение этой проблемы?

Ответы [ 5 ]

8 голосов
/ 28 сентября 2011

AWT TextField не поддерживает границы, как вы нашли.Вы можете эмулировать границу, поместив текстовое поле внутри Panel, которое немного больше текстового поля, и изменив цвет фона панели.

2 голосов
/ 28 сентября 2011

Для совместимости с вариациями внешнего вида API setBorder() рекомендует следующее: «В общем случае, когда вы хотите установить границу для стандартного компонента Swing, отличного от JPanel или JLabel мы рекомендуем поместить компонент в JPanel и установить границу для JPanel. "

Добавление: хотя это предполагает подход, оно не имеет отношения к чисто AWT-приложению.

1 голос
/ 28 октября 2018
tf.setBorder(new LineBorder(Color.red,1));
//new LineBorder(color,width);
0 голосов
/ 01 июня 2019

Создать границу линии с указанным цветом и шириной

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

Установить границу этого компонента

 JTextField.setBorder(border);
0 голосов
/ 11 апреля 2019
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;
    }
...