不知道这是否会帮助,但对于一些属性(我不知道有多少?)如果孩子值为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);'.. –