用户移动窗口
用户图标化或取消图标化窗口
用户将另一个窗口移到窗口的前面
hexValueList
方法中修改placeNumbers
列表的原因,因为该方法由drawHexagonalGrid
调用,而paint
则由该方法调用。hexValueList
中删除数字,而是使用列表的iterator()方法对其进行迭代,并将每个迭代的int值作为参数传递给placeNumbers
:private void placeNumbers(Graphics g, Polygon p, boolean flag, int hexValue) {
int x = p.getBounds().x + 30;
int y = p.getBounds().y + 50;
int width = p.getBounds().width / 3;
int height = p.getBounds().width / 3;
g.drawOval(x, y, width, height);
g.setColor(Color.WHITE);
// g.setColor(new Color((int)(Math.random() * 0x1000000)));
g.fillOval(x, y, width, height);
g.setColor(Color.BLACK);
if (flag) {
g.drawString("" + hexValue, x + 10, y + 20);
}
}
private Graphics drawHexagonalGrid() {
Iterator<Integer> hexValueIterator = hexValueList.iterator();
System.out.println("Drawing the hexagonal grid");
Graphics g = getGraphics();
System.out.println("graphics---->" + g);
boolean isValidHex = true;
// row 1 - three grids
Polygon p = new Polygon(Utilities.getMoreXPoints(xPoints, HEX_CONSTANT + 45),
Utilities.getMoreYPoints(yPoints, (HEX_CONSTANT / 9) + 20), nPoints);
//
g.drawPolygon(p);
g.setColor(Color.GREEN);
g.fillPolygon(p);
placeNumbers(g, p, isValidHex, hexValueIterator.next());
p = new Polygon(Utilities.getMoreXPoints(xPoints, HEX_CONSTANT + 135),
Utilities.getMoreYPoints(yPoints, (HEX_CONSTANT / 9) + 20), nPoints);
g.drawPolygon(p);
g.setColor(Color.BLUE);
g.fillPolygon(p);
placeNumbers(g, p, isValidHex, hexValueIterator.next());
p = new Polygon(Utilities.getMoreXPoints(xPoints, HEX_CONSTANT + 225),
Utilities.getMoreYPoints(yPoints, (HEX_CONSTANT / 9) + 20), nPoints);
g.drawPolygon(p);
g.setColor(Color.RED);
g.fillPolygon(p);
placeNumbers(g, p, isValidHex, hexValueIterator.next());
// row 2 - four grids
p = new Polygon(Utilities.getMoreXPoints(xPoints, HEX_CONSTANT + 0),
Utilities.getMoreYPoints(yPoints, (HEX_CONSTANT / 9) + 110), nPoints);
g.drawPolygon(p);
// System.out.println(Arrays.toString(p.xpoints) + " " +
// Arrays.toString(p.ypoints));
g.setColor(Color.GRAY);
g.fillPolygon(p);
placeNumbers(g, p, isValidHex, hexValueIterator.next());
p = new Polygon(Utilities.getMoreXPoints(xPoints, HEX_CONSTANT + 90),
Utilities.getMoreYPoints(yPoints, (HEX_CONSTANT / 9) + 110), nPoints);
g.drawPolygon(p);
// System.out.println(Arrays.toString(p.xpoints) + " " +
// Arrays.toString(p.ypoints));
g.setColor(Color.ORANGE);
g.fillPolygon(p);
placeNumbers(g, p, isValidHex, hexValueIterator.next());
p = new Polygon(Utilities.getMoreXPoints(xPoints, HEX_CONSTANT + 180),
Utilities.getMoreYPoints(yPoints, (HEX_CONSTANT / 9) + 110), nPoints);
g.drawPolygon(p);
// System.out.println(Arrays.toString(p.xpoints) + " " +
// Arrays.toString(p.ypoints));
g.setColor(Color.YELLOW);
g.fillPolygon(p);
placeNumbers(g, p, isValidHex, hexValueIterator.next());
p = new Polygon(Utilities.getMoreXPoints(xPoints, HEX_CONSTANT + 270),
Utilities.getMoreYPoints(yPoints, (HEX_CONSTANT / 9) + 110), nPoints);
g.drawPolygon(p);
// System.out.println(Arrays.toString(p.xpoints) + " " +
// Arrays.toString(p.ypoints));
g.setColor(Color.YELLOW);
g.fillPolygon(p);
placeNumbers(g, p, isValidHex, hexValueIterator.next());
// row 3 - five grids
p = new Polygon(Utilities.getMoreXPoints(xPoints, HEX_CONSTANT - 45),
Utilities.getMoreYPoints(yPoints, (HEX_CONSTANT / 9) + 200), nPoints);
g.drawPolygon(p);
g.setColor(Color.PINK);
g.fillPolygon(p);
placeNumbers(g, p, isValidHex, hexValueIterator.next());
p = new Polygon(Utilities.getMoreXPoints(xPoints, HEX_CONSTANT + 45),
Utilities.getMoreYPoints(yPoints, (HEX_CONSTANT / 9) + 200), nPoints);
g.drawPolygon(p);
g.setColor(Color.GREEN);
g.fillPolygon(p);
placeNumbers(g, p, isValidHex, hexValueIterator.next());
p = new Polygon(Utilities.getMoreXPoints(xPoints, HEX_CONSTANT + 135),
Utilities.getMoreYPoints(yPoints, (HEX_CONSTANT / 9) + 200), nPoints);
g.drawPolygon(p);
g.setColor(Color.BLACK);
g.fillPolygon(p);
placeNumbers(g, p, !isValidHex, 0);
p = new Polygon(Utilities.getMoreXPoints(xPoints, HEX_CONSTANT + 225),
Utilities.getMoreYPoints(yPoints, (HEX_CONSTANT / 9) + 200), nPoints);
g.drawPolygon(p);
g.setColor(Color.GRAY);
g.fillPolygon(p);
placeNumbers(g, p, isValidHex, hexValueIterator.next());
p = new Polygon(Utilities.getMoreXPoints(xPoints, HEX_CONSTANT + 315),
Utilities.getMoreYPoints(yPoints, (HEX_CONSTANT / 9) + 200), nPoints);
g.drawPolygon(p);
g.setColor(Color.RED);
g.fillPolygon(p);
placeNumbers(g, p, isValidHex, hexValueIterator.next());
// row 4 - four grids
p = new Polygon(Utilities.getMoreXPoints(xPoints, HEX_CONSTANT + 0),
Utilities.getMoreYPoints(yPoints, (HEX_CONSTANT / 9) + 290), nPoints);
g.drawPolygon(p);
g.setColor(Color.GRAY);
g.fillPolygon(p);
placeNumbers(g, p, isValidHex, hexValueIterator.next());
p = new Polygon(Utilities.getMoreXPoints(xPoints, HEX_CONSTANT + 90),
Utilities.getMoreYPoints(yPoints, (HEX_CONSTANT / 9) + 290), nPoints);
g.drawPolygon(p);
g.setColor(Color.RED);
g.fillPolygon(p);
placeNumbers(g, p, isValidHex, hexValueIterator.next());
p = new Polygon(Utilities.getMoreXPoints(xPoints, HEX_CONSTANT + 180),
Utilities.getMoreYPoints(yPoints, (HEX_CONSTANT / 9) + 290), nPoints);
g.drawPolygon(p);
g.setColor(Color.PINK);
g.fillPolygon(p);
placeNumbers(g, p, isValidHex, hexValueIterator.next());
p = new Polygon(Utilities.getMoreXPoints(xPoints, HEX_CONSTANT + 270),
Utilities.getMoreYPoints(yPoints, (HEX_CONSTANT / 9) + 290), nPoints);
g.drawPolygon(p);
g.setColor(Color.GREEN);
g.fillPolygon(p);
placeNumbers(g, p, isValidHex, hexValueIterator.next());
// row 5 - three grids
p = new Polygon(Utilities.getMoreXPoints(xPoints, HEX_CONSTANT + 45),
Utilities.getMoreYPoints(yPoints, (HEX_CONSTANT / 9) + 380), nPoints);
g.drawPolygon(p);
g.setColor(Color.YELLOW);
g.fillPolygon(p);
placeNumbers(g, p, isValidHex, hexValueIterator.next());
p = new Polygon(Utilities.getMoreXPoints(xPoints, HEX_CONSTANT + 135),
Utilities.getMoreYPoints(yPoints, (HEX_CONSTANT / 9) + 380), nPoints);
g.drawPolygon(p);
g.setColor(Color.ORANGE);
g.fillPolygon(p);
placeNumbers(g, p, isValidHex, hexValueIterator.next());
p = new Polygon(Utilities.getMoreXPoints(xPoints, HEX_CONSTANT + 225),
Utilities.getMoreYPoints(yPoints, (HEX_CONSTANT / 9) + 380), nPoints);
g.drawPolygon(p);
g.setColor(Color.GRAY);
g.fillPolygon(p);
placeNumbers(g, p, isValidHex, hexValueIterator.next());
// repaint();
return g;
}
现在,绘画逻辑只读取hexValueList
,而不修改它,因此,多久调用一次paint
方法都没有关系。
我也删除了flag = false;
,因为它没有目的。 flag
是方法参数,因此在方法内部更改其值对方法外部无效。