添加属性时使方法更短

时间:2016-06-23 11:52:54

标签: java arrays button

我有两个带按钮对象的数组:

this.rightButtons = new JButton[MAX_RBUTTONS];
this.wrongButtons = new JButton[MAX_WBUTTONS];

我通过以下方法为每一个添加属性(颜色等):

private void preferences(String buttonType, int num) {
    if (buttonType.equalsIgnoreCase("right")) {
        this.rightButtons[num] = new JButton("");
        this.rightButtons[num].setToolTipText("gg");
        this.rightButtons[num].setPreferredSize(new Dimension(40, 40));
        this.rightButtons[num].setBackground(Color.LIGHT_GRAY);
        this.rightButtons[num].setOpaque(true);
        this.add(this.rightButtons[num]);                   
    } else if (buttonType.equalsIgnoreCase("wrong")) {
        this.wrongButtons[num] = new JButton("");
        this.wrongButtons[num].setToolTipText("gg");
        this.wrongButtons[num].setPreferredSize(new Dimension(40, 40));
        this.wrongButtons[num].setBackground(Color.LIGHT_GRAY);
        this.wrongButtons[num].setOpaque(true);
        this.add(this.wrongButtons[num]);
    }

如您所见,它们具有相同的属性。有没有办法将此代码更改为较短的代码?唯一改变的是this.wrongButtonsthis.rightButtons(数组名称)。

2 个答案:

答案 0 :(得分:1)

只需将公共部分集中在一个方法中(并传递参数以获得更大的灵活性):

private JButton createButton(String tooltip, int width, int height, Color color){

        JButton button = new JButton();
        button.setToolTipText(tooltip);
        button.setPreferredSize(new Dimension(width,height));
        button.setBackground(color);
        button.setOpaque(true);

        return button;
    }

然后叫它:

if (buttonType.equalsIgnoreCase("right")) {

    this.rightButtons[num] = createButton("Is this the correct one?",40,40,Color.LIGHT_GRAY);
    this.add(this.rightButtons[num]);                   
} else if (buttonType.equalsIgnoreCase("wrong")) {
    this.wrongButtons[num] = createButton("Is this the correct one?",40,40,Color.LIGHT_GRAY);
    this.add(this.wrongButtons[num]);
}

答案 1 :(得分:1)

是的,它非常简单 - 关于按钮的一切都与您存储它的位置相同。所以创建它,然后存储它:

private void preferences(String buttonType, int num) {
    JButton button = new JButton("");
    button.setToolTipText("gg");
    button.setPreferredSize(new Dimension(40, 40));
    button.setBackground(Color.LIGHT_GRAY)
    button.setOpaque(true);
    add(button);
    JButton[] array = buttonType.equalsIgnoreCase("right")
        ? rightButtons : wrongButtons;
    array[num] = button;
}

(这假设每个按钮类型都是“正确”或“错误”。)

我个人建议使用列表而不是数组,顺便说一句......