2015-01-21 88 views
1

我正在寫一個使用涉及表單的Swing程序。提交表單時,我有一個驗證它的函數,並且任何無效字段都應該以紅色突出顯示以進行更正,然後一旦有效,就會將其更改回默認邊界。更改JTextField邊框的顏色而不更改其其他屬性?

目前,我使用以下方法獲取默認JTextField邊框。

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

有沒有辦法做到這一點,而不創建一個不必要的對象?

更重要的是,如何更改邊框的顏色而不影響其他屬性?

+1

'UIManager.getBorder(「Textfield.border」)'取決於外觀和感覺。你也可以使用類似'JLayer'的東西來繪製到你的UI上[例如](http://stackoverflow.com/questions/25274566/how-can-i-change-the-highlight-color-of-a- focused-jcombobox/25276658#25276658) – MadProgrammer 2015-01-21 09:29:29

+0

正如相關[API](http://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html#setBorder-javax.swing。 border.Border-)。 – trashgod 2015-01-21 09:58:20

+0

謝謝安德魯;您的解決方案完美運作 – FlyingMonkey 2015-01-21 10:27:56

回答

1

我會將文本字段添加到面板並設置面板的邊框。

這樣,我們可以不改變文本字段的邊界,並且它仍然具有適合於PLAF和情況(聚焦等)的邊界。