是否可以使用组件(如jButton)作为函数中的参数?

时间:2016-10-09 17:01:59

标签: java netbeans jbutton

如果我对多个按钮使用完全相同的代码行,是否可以使用组件(在本例中为按钮)作为函数的参数而不是使用变量?这将使我的工作变得更加容易。如果我有这样的事情:

a1.setText("something");
a1.setBackground(Color.BLACK);
a1.setForeground(Color.WHITE);

a2.setText("something");
a2.setBackground(Color.BLACK);
a2.setForeground(Color.WHITE);

a3.setText("something");
a3.setBackground(Color.BLACK);
a3.setForeground(Color.WHITE);

我可以将它们组合成一个函数:

public void buttonFunction(Button something){
    something.setText("something");
    something.setBackground(Color.BLACK);
    something.setForeground(Color.WHITE);
}

如果可以,我该怎么办?

2 个答案:

答案 0 :(得分:1)

是的。 你做的尝试是这样做的方法。

public void buttonFunction(JButton something){
    something.setText("something");
    something.setBackground(Color.BLACK);
    something.setForeground(Color.WHITE);
}

您需要做的就是在创建JButton对象后调用此函数。

答案 1 :(得分:0)

当然可行。 您可以将任何内容作为参数传递,甚至是方法,类和类型。

1。以下是一种可以执行您所要求的简单方法:

public static Component setUpComponent(Component component){
    if(component instanceof JButton){
        JButton button = (JButton)component;
        button.setText("something");
        button.setBackground(Color.BLACK);
        button.setForeground(Color.WHITE);
        return button;
    } else if(component instanceof <"Some other class, like JPanel">){
       //do something else for that class
    }
    throw new Exception("Invalid Object");
    return null;
}

以下是如何使用它:

for(int index = 0; index <= 2; index++){
    JButton button = new JButton();
    setUpComponent(button);
    //do whatever you want to do
}

2. 您还可以创建一个方法,只为您提供一个就绪按钮:

public static JButton getButton(){
    JButton button = new JButton("something");
    button.setBackground(Color.BLACK);
    button.setForeground(Color.WHITE);
    return button;
}

以下是如何使用它:

for(int index = 0; index <= 2; index++){
    JButton button = setUpComponent(button);
    //do whatever you want to do
}

3。但在我看来,最好的方法是创建一个新类并在那里设置按钮。像这样:

public class CustomButton extends JButton{

    public CustomButton(){
        this("something",Color.BLACK,Color.WHITE);
    }

    public CustomButton(String text, Color backColor, Color frontColor){
        super(something);
        setBackground(backColor);
        setForeground(frontColor);
    }

}

以下是如何使用它:

for(int index = 0; index <= 2; index++){
    JButton button = new CustomButton();
    //same as:
    //CustomButton button = new CustomButton();
    //or
    //JButton button = new CustomButton("something",Color.BLACK,Color.WHITE);
}