需要帮助将MouseListener添加到JPdnel的2d数组中

时间:2015-01-22 22:14:11

标签: java arrays swing jframe mouselistener

所以我正在制作游戏,其中的细节并不重要,但我使用的是用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);

1 个答案:

答案 0 :(得分:0)

我建议在说你不知道如何做某事之前学习如何使用搜索引擎。编程的一部分是学习如何解决问题。但是这里有一个关于如何开始向面板添加鼠标监听器的想法。

panels[i][j].addMouseListener(new MouseAdapter() { 
      public void mousePressed(MouseEvent me) { 
        System.out.println(me); 
      } 
    });