Ответ 1
AWT TextField
не поддерживает границы, как вы уже нашли. Вы можете эмулировать границу, поместив текстовое поле внутри Panel
, которое немного больше текстового поля и меняет цвет фона панели.
В приложении AWT мне нужно установить цвет границы TextField.
В JTextField я знаю, что мы можем сделать следующее
JTextField tf = new JTextField();
tf.setBorder(BorderFactory.createLineBorder(Color.decode("#2C6791")));
Но метод setBorder() недоступен в awt TextField. Есть ли способ обхода проблемы?
AWT TextField
не поддерживает границы, как вы уже нашли. Вы можете эмулировать границу, поместив текстовое поле внутри Panel
, которое немного больше текстового поля и меняет цвет фона панели.
Для совместимости с изменениями внешнего вида, setBorder()
API рекомендует следующее: "В общем, если вы хотите установить границу на стандартном компоненте Swing, отличном от JPanel
или JLabel
, мы рекомендуем поместить компонент в JPanel
и установить границу на JPanel
."
Добавление: Хотя это предполагает подход, это не имеет отношения к чистым приложениям AWT.
tf.setBorder(new LineBorder(Color.red,1));
//new LineBorder(color,width);
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;
}