所以,本质上我是在创造内存。我有一个图 block 类,此时它只有一个数字和一个 boolean 值(以显示它是否被翻转)。我将所有数字复制为 Tile 对象并将它们随机化,然后将它们添加到我的布局中。
基本上,我需要它们作为 JLabels 显示在我的屏幕上,但我不太确定如何执行此操作?我应该扩展其他东西,还是在我的 Tile 类中做一些特别的事情?还是我其他地方的逻辑有问题?这是我此时的 Tile 类(很少)
PS。我还需要为触发器使用计时器class Tile extends JLabel implements ActionListener{
boolean flipped;
int imageNum;
ImageIcon image;
JLabel card;
Tile(int num, boolean f)
{
imageNum=num;
flipped=f;
card=new JLabel(""+imageNum);
}
public void flipCard()
{
}
public void actionPerformed(ActionEvent a)
{
}
任何帮助将不胜感激! 编辑:
这是我尝试添加图 block 的主类
JPanel gridPanel = new JPanel(new GridLayout(gridSize, gridSize));
Tile[][]tiles=new Tile[(gridSize*gridSize)/2][2];
boolean[][]tilePlaced=new boolean[(gridSize*gridSize)/2][2];
JLabel[][] cardsOnGrid = new JLabel[gridSize][gridSize];
for(int i=0;i<gridSize;i++)
{
for(int j=0;j<gridSize;j++)
cardsOnGrid[i][j]=new JLabel("");
}
for(int i=0; i<((gridSize*gridSize)/2);i++)
{
tiles[i][0]= new Tile(i, true);
tiles[i][1]= new Tile(i, true);
tilePlaced[i][0]=false;
tilePlaced[i][1]=false;
}
for(int i=0; i<gridSize;i++)
{
for(int j=0;j<gridSize;j++)
{
int tileNum = tileRandom(gridSize);
int tileNumVer = (int)Math.floor(Math.random()*2);
while(tilePlaced[tileNum][tileNumVer]==true)
{
tileNum = tileRandom(gridSize);
tileNumVer = (int)Math.floor(Math.random()*2);
}
gridPanel.add(tiles[tileNum][tileNumVer]);
tilePlaced[tileNum][tileNumVer]=true;
}
:'(
最佳答案
Tile(int num, boolean f){
imageNum=num;
flipped=f;
card=new JLabel(""+imageNum);//1. Remove this line and card Label
super.setText(String.valueOf(num));//ADD This line
}
<小时/>
只需创建Tile
的对象
Tile myLabel = new Tile(10,false);//this will create lable
因为您的 Tile
类是 JLabel
的子类,不需要在 Tile
类中创建 Label
为 Tile
本身是一个 Label
。除此之外,您不会获得 JLabel
的操作事件。它不是可点击的元素,使用 MouseListener
.
关于java - 如何创建一个扩展 jLabel 的类,以便它在我的主类中显示为 JLabel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30609296/