我需要一些帮助来解决这个问题。我似乎无法弄清楚它为什么不起作用。 我想在我的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);
}
}
答案 0 :(得分:2)
setUpButton
是ButtonDefault
而不是JButton
的自定义方法。因此数组声明应该是
private ButtonDefault[][] buttons = new ButtonDefault[ROWS][COLUMNS];
注意:
static
声明表示设计不佳,因此请使用实例字段答案 1 :(得分:0)
在调用setUpButton
之前尝试进行转换((ButtonDefault)button[i][j]).setUpButton();