所以我正在制作游戏,其中的细节并不重要,但我使用的是用11x11 2d阵列的JPanel制作的电路板,然后使用JLabel作为&# 34;片&#34 ;.我想在面板上添加一个MouseListener,例如:单击面板[10] [5]时;板[10] [5]。新增(redCircle)。我的问题只是缺乏关于mouselisteners的语法和使用的知识,因为我的老师并没有太多的教学,而且我在网上的例子中遇到了一些麻烦。我只需要对这些听众的创建和实现提供一般帮助,对我的代码的任何其他意见都非常重视,因为这是我的第一个真正的程序,而且我不是很擅长。
这就是我现在所拥有的:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.border.BevelBorder;
public class GameFrame extends JFrame
{
private JPanel[][] panels = new JPanel[11][11];
private JPanel tilePanel;
private JLabel blackSquare;
private JLabel blackCircle;
private JLabel blackTriangle;
private JLabel redSquare;
private JLabel redCircle;
private JLabel redTriangle;
private int sideLength;
public GameFrame()
{
setSize(1000,750);
setResizable(false);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setLocationRelativeTo(null);
sideLength = 11;
tilePanel = new JPanel();
tilePanel.setLayout(new GridLayout(sideLength,sideLength));
Color darkBlue = new Color(31,62,148);
Color darkGray = new Color(107,107,107);
for (int i = 0; i < 11; i++)
{
for (int j = 0; j < 11; j++)
{
panels[i][j] = new JPanel();
if (i%2 == j%2)
{
panels[i][j].setBackground(darkGray);
}
else
{
panels[i][j].setBackground(darkBlue);
}
panels[i][j].setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
tilePanel.add(panels[i][j]);
}
}
blackTriangle = new JLabel(new ImageIcon("blackTriangleUp.fw.png"));
blackSquare = new JLabel(new ImageIcon("blackSquare.fw.png"));
blackCircle = new JLabel(new ImageIcon("blackCircle.fw.png"));
redTriangle = new JLabel(new ImageIcon("redTriangleUp.fw.png"));
redSquare = new JLabel(new ImageIcon("redSquare.fw.png"));
redCircle = new JLabel(new ImageIcon("redCircle.fw.png"));
panels[0][0].add(blackTriangle);
panels[1][1].add(blackSquare);
panels[2][2].add(blackCircle);
panels[3][3].add(redTriangle);
panels[4][4].add(redSquare);
panels[5][5].add(redCircle);
add(tilePanel);
setVisible(true);
答案 0 :(得分:0)
我建议在说你不知道如何做某事之前学习如何使用搜索引擎。编程的一部分是学习如何解决问题。但是这里有一个关于如何开始向面板添加鼠标监听器的想法。
panels[i][j].addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent me) {
System.out.println(me);
}
});