2015-01-21 4 views
1

Я пишу программу с использованием Swing, которая включает в себя форму. Когда форма отправлена, у меня есть функция, которая ее проверяет, и любые недопустимые поля должны быть выделены красным цветом для исправления, а затем снова вернутся к границе по умолчанию.Изменить цвет границы JTextField, не изменяя другие свойства?

В настоящее время я использую следующий метод, чтобы получить границу по умолчанию JTextField.

private Border defaultBorder = new JTextField().getBorder(); 

Есть ли способ сделать это без создания ненужного объекта?

Что еще более важно, как изменить цвет рамки, не затрагивая ее другие свойства?

+1

'UIManager.getBorder (« Textfield.border »)' в зависимости от внешнего вида. Вы также можете использовать что-то вроде 'JLayer' для рисования на вашем пользовательском интерфейсе, например [http://stackoverflow.com/questions/25274566/how-can-i-change-the-highlight-color-of-a- focus-jcombobox/25276658 # 25276658) – MadProgrammer

+0

Как указано в соответствующем [API] (http://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html#setBorder-javax.swing. border.Border-). – trashgod

+0

Спасибо, Андрей; Ваше решение отлично работало. – FlyingMonkey

ответ

1

Я бы добавил текстовое поле к панели и установил границу панели.

Таким образом, мы можем оставить границу текстового поля нетронутой, и она все равно будет иметь соответствующую границу для этой PLAF и ситуации (сфокусированной и т. Д.).

Смежные вопросы