在扩展JButton类中调用方法时找不到符号错误

时间:2014-12-29 17:55:53

标签: java methods jframe jbutton subclassing

我需要一些帮助来解决这个问题。我似乎无法弄清楚它为什么不起作用。 我想在我的ButtonDefault类中添加更多方法,这是JButton的子类,但我一直在找"符号未找到"错误。

下面的代码,ButtonDefault的实例化工作,默认颜色和动作 按钮返回,工作正常。但是,所有代码都在ButtonDefault的构造函数中。 我想为ButtonDefault类添加其他方法,以便稍后我可以更改颜色 按钮等。

我不断得到的错误:
    MineSweeper.java:50:找不到符号     符号:方法setUpButton()     location:类javax.swing.JButton                                         按钮[i] [j] .setUpButton();

我有2节课。

//MineSweeper.java
public class MineSweeper extends JFrame implements ActionListener,MouseListener,ItemListener {
    static JButton[][] button = new ButtonDefault[17][31];

    public void tileSetup()
    {
       button[i][j] = new ButtonDefault(i,j, this); //This work just fine
       //These work too - I just don't want it here. 
       //button[i][j].setIcon(null);
       //button[i][j].setBorder(UIManager.getBorder("Button.border"));
       //button[i][j].setBackground(null);
       //button[i][j].setBackground(Color.BLUE);
       //button[i][j].setBorder(new LineBorder(Color.GRAY, 1));
       //button[i][j].setEnabled(true);
       button[i][j].setUpButton(); //This don't work. 
    }
}

//ButtonDefault.java
public class ButtonDefault extends JButton implements ActionListener,MouseListener,ItemListener
{
    public ButtonDefault(){};
    public ButtonDefault(int x, int y, final MineSweeper mineObject)
    {
        this.setPreferredSize(new Dimension(18,18));
        this.setBackground(Color.BLUE);

        addMouseListener(new MouseListener() {  
           //All the code in here work just fine. 
    }

    public void setUpButton()
    {
        this.setIcon(null);
        this.setBorder(UIManager.getBorder("Button.border"));
        this.setBackground(null);
        this.setBackground(Color.BLUE);
        this.setBorder(new LineBorder(Color.GRAY, 1));
        this.setEnabled(true);
    }

}

2 个答案:

答案 0 :(得分:2)

setUpButtonButtonDefault而不是JButton的自定义方法。因此数组声明应该是

private ButtonDefault[][] buttons = new ButtonDefault[ROWS][COLUMNS];

注意:

  • 通常使用static声明表示设计不佳,因此请使用实例字段
  • 魔术数字也被认为是糟糕的设计,至少考虑使用常量

答案 1 :(得分:0)

在调用setUpButton

之前尝试进行转换
((ButtonDefault)button[i][j]).setUpButton();