我创建了一个网格和我的类的双数组gridBalls
。
gridBalls
有一个int
类型,你传递给它一个数字来确定在网格中绘制什么,比如 0 空白,1 球等。
mousedragged
如果我想说单击网格上的插槽 [0][0](假装它是一个球),将我的鼠标向右拖动并绘制一条水平线(在此输入 3),我的代码会是什么样子例如),或者如果我拖动鼠标底部并绘制一条垂直线(类型 2)
public class connectiontest extends JApplet implements Runnable, MouseListener, MouseMotionListener
{
Thread t;
int GRIDSIZE = 6;
int gridLevel = 1;
JPanel menuPanel = new JPanel (null);
JPanel gamePanel = new JPanel (new GridLayout (GRIDSIZE, GRIDSIZE));
gridBalls[] [] panelGrid = new gridBalls [GRIDSIZE] [GRIDSIZE];
public void init ()
{
getContentPane ().setBackground (Color.black);
getContentPane ().setLayout (null);
setSize (600, 600);
gamePanel.setBounds (80, 120, 450, 450);
gamePanel.setEnabled (true);
menuPanel.setBounds (10, 10, 580, 100);
menuPanel.setBackground (Color.black);
menuPanel.setOpaque (true);
menuPanel.setBorder (BorderFactory.createLineBorder (Color.white, 1));
getContentPane ().add (gamePanel);
getContentPane ().add (menuPanel);
t = new Thread (this);
drawGrid ();
levels ();
t.start ();
}
public void run ()
{
while (t != null)
{
try
{
t.sleep (20);
}
catch (InterruptedException e)
{
break;
}
}
}
private void drawGrid ()
{
for (int row = 0 ; row < GRIDSIZE ; row++)
{
for (int col = 0 ; col < GRIDSIZE ; col++)
{
panelGrid [row] [col] = new gridBalls ();
panelGrid [row] [col].setOpaque (true);
panelGrid [row] [col].setBackground (Color.black);
panelGrid [row] [col].clr = Color.black;
panelGrid [row] [col].setBorder (BorderFactory.createLineBorder (Color.blue, 1));
gamePanel.add (panelGrid [row] [col]);
panelGrid [row] [col].addMouseListener (this);
panelGrid [row] [col].addMouseMotionListener (this);
}
}
}
public void mouseClicked (MouseEvent e)
{
}
public void mouseEntered (MouseEvent e)
{
}
public void mouseExited (MouseEvent e)
{
}
public void mousePressed (MouseEvent e)
{
}
public void mouseMoved (MouseEvent e)
{
}
public void mouseDragged (MouseEvent e)
{
for (int i = 0 ; i < GRIDSIZE ; i++)
{
for (int j = 0 ; j < GRIDSIZE ; j++)
{
if (e.getSource () == panelGrid [i] [j])
{
repaint ();
}
}
}
}
public void mouseReleased (MouseEvent e)
{
}
public void levels ()
{
if (gridLevel == 1)
{
panelGrid [0] [0].clr = Color.green;
panelGrid [0] [0].type = 1;
panelGrid [4] [0].clr = Color.green;
panelGrid [4] [0].type = 1;
panelGrid [0] [5].clr = Color.blue;
panelGrid [0] [5].type = 1;
panelGrid [5] [2].clr = Color.blue;
panelGrid [5] [2].type = 1;
panelGrid [0] [4].clr = Color.red;
panelGrid [0] [4].type = 1;
panelGrid [3] [2].clr = Color.red;
panelGrid [3] [2].type = 1;
panelGrid [5] [0].clr = Color.magenta;
panelGrid [5] [0].type = 1;
panelGrid [0] [1].clr = Color.magenta;
panelGrid [0] [1].type = 1;
panelGrid [1] [4].clr = Color.orange;
panelGrid [1] [4].type = 1;
panelGrid [4] [2].clr = Color.orange;
panelGrid [4] [2].type = 1;
panelGrid [0] [2].clr = Color.cyan;
panelGrid [0] [2].type = 1;
panelGrid [2] [2].clr = Color.cyan;
panelGrid [2] [2].type = 1;
repaint ();
}
}
}
class gridBalls extends JLabel
{
Color clr;
int type = 0;
public gridBalls ()
{
}
public void paintComponent (Graphics g)
{
super.paintComponent (g);
g.setColor (clr);
// blank
if (type == 0)
{
}
// ball
if (type == 1)
{
g.fillOval ((getWidth () / 10), (getHeight () / 10), (getWidth () - 14), (getHeight () - 14));
}
// vertical line
if (type == 2)
{
g.fillRect ((getWidth () / 3), 0, (getWidth () / 3), getHeight ());
}
// horizontal line
if (type == 3)
{
g.fillRect (0, (getHeight () / 3), (getWidth ()), (getHeight () / 3));
}
// corner piece top>right
if (type == 4)
{
g.fillRect ((getWidth () / 3), 0, (getWidth () / 3), (getHeight () / 2));
g.fillRect ((getHeight () / 3), (getHeight () / 3), (getWidth ()), (getHeight () / 3));
}
// corner piece top>left
if (type == 5)
{
g.fillRect ((getWidth () / 3), 0, (getWidth () / 3), (getHeight () / 2));
g.fillRect (0, (getHeight () / 3), (getWidth () / 3 + getWidth () / 3), (getHeight () / 3));
}
// corner piece bottom>right
if (type == 6)
{
g.fillRect ((getWidth () / 3), (getHeight () / 2), (getWidth () / 3), (getHeight () / 2));
g.fillRect ((getHeight () / 3), (getHeight () / 3), (getWidth ()), (getHeight () / 3));
}
// corner piece bottom>left
if (type == 7)
{
g.fillRect ((getWidth () / 3), (getHeight () / 2), (getWidth () / 3), (getHeight () / 2));
g.fillRect (0, (getHeight () / 3), (getWidth () / 3 + getWidth () / 3), (getHeight () / 3));
}
}
}