【发布时间】:2015-01-22 22:14:10
【问题描述】:
所以我正在开发一款游戏,其细节并不重要,但我使用的是由 11x11 2d 阵列的 JPanel 制成的棋盘,然后将 JLabels 用作“棋子”。我想在面板中添加一个 MouseListener,例如:单击面板 [10] [5] 时;面板[10][5].add(redCircle)。我的问题只是缺乏关于鼠标监听器的语法和使用的知识,因为我的老师教的不多,而且我在学习在线示例时遇到了一些麻烦。我只需要创建和实现此类侦听器的一般帮助,关于我的代码的任何其他意见都受到高度重视,因为这是我的第一个真正的程序,我不太擅长。
这是我现在拥有的:
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);
【问题讨论】:
-
"My issue is just a lack of knowledge about the syntax and use of mouselisteners in general, as my teacher doesn't teach much and I've been having a bit of trouble following online examples."-- 您当前的代码未显示您的第一次最佳尝试。为了获得最佳帮助,您应该从这些教程开始,至少先尝试实现 MouseListener,然后如果它不起作用,请向我们展示您的尝试。你也没有提到什么让你感到困惑。 -
例如,您可以在创建它们的 for 循环中将 MouseListener 添加到 JPanel 中......为什么不试试看会发生什么,......你绝对没有什么可失去的并在尝试中获益。
-
这将是我的问题,我不知道如何将 MouseListener 添加到 JPanel。
-
"我不知道怎么给 JPanel 添加 MouseListener" - 那我建议你从How to Write a Mouse Listener开始
-
你需要继续前进的关键技能之一是愿意至少尝试一些事情,任何事情。如果你不能做到这一点,你就会沉没。
标签: java arrays swing jframe mouselistener