不知道這是否會幫助,但對於一些屬性(我不知道有多少?)如果孩子值爲null父值會被使用
例如:
JLabel label= new JLabel("hello");
label.setForeground(null);
label.setFont(null);
JTextField textField = new JTextField(10);
textField.setForeground(null);
textField.setFont(null);
JPanel panel = new JPanel();
panel.setForeground(Color.RED);
panel.setFont(new Font("monospaced", Font.PLAIN, 24));
panel.add(label);
panel.add(textField);
對於那些不支持此操作,你需要重寫面板的setXXX(...)
方法來更新其所有子組件的屬性。
編輯:
所以我假設你有一個自定義組件是這樣的:
public class CustomComponent extends JPanel
{
private JLabel heading = new JLabel(...);
private JTextField textField = new JTextField(5);
private JLabel error = new JLabel(...);
public CustomComponent()
{
add(heading);
add(textField);
add(error);
clearProperties(heading);
clearProperties(textField);
clearProperties(error);
}
private void clearProperties(JComponent component)
{
component.setForeground(null);
component.setFont(null);
}
}
現在,當您使用的組件,你可以這樣做:
CustomComponent component = new CustomComponent();
component.setForeground(...);
component.setFont(..);
使用此您不必重寫面板的setForeground(...),setFont(...)以將屬性應用於每個子組件。
製作類的字段屬性,並提供get/set方法以根據需要更改內容。這是基本的OO(在嘗試創建GUI之前應該先排序 - 這是一個高級主題)。 –
哈哈這個工作真的很好@AndrewThompson非常感謝你,我與Netbeans合作,所以我在調色板中添加我的組件,當我拖放我的組件時,我不能編輯像其他組件一樣的子組件,但是我可以編輯它們我的構造函數,你有什麼想法我可以從GUI編輯它們嗎?我會編輯我的問題,這樣你就可以瞭解更多謝謝你 –
我使用Netbeans(沒有GUI設計器),但不提供對它的支持。另外:'JTextField field = new JTextField();'最好是類似的東西(調整需要的整數)'JTextField field = new JTextField(8);'.. –