Рисую игру. Боард 8*8 в нем кликаешь по одному из квадратиков (TileJPanel), в которых рисуется круг.
Класс TileJPanel
import javax.swing.JPanel;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Graphics;
/**
* A {@link TileJPanel} is a panel, that implement a position on
* a graphic board, i.e. a {@param playPanel} of the Shell.
*/
public class TileJPanel extends JPanel {
private Color color;
private int width;
private int height;
/**
* Constructs a new {@link TileJPanel} with a {@param color} circle
* in the middle and with a dimension {@param width} and {@param hight}.
*
* @param color
* a color of the circle on a new {@link TileJPanel}.
* @param width
* a width of a circle in the new {@link TileJPanel}.
* @param height
* a height of a circle in the new {@link TileJPanel}.
*/
public TileJPanel(Color color, int width, int height) {
this.color = color;
this.width = width;
this.height = height;
}
/**
* {@inheritDoc}
*/
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.setColor(color);
g2.fillOval(0, 0, width, height);
}
}
в интерфейсе рисую так:
playPanel = new TileJPanel(Color.BLUE, TILE_DIMENSION.width, TILE_DIMENSION.height);
где TILE_DIMENSION это константа
Инициализация игры рисуется по размерам константы, поэтому все хорошо
Когда во время игры раздвигаю JFrame кружочки в клетках остаются старого диаметра (равного TILE_DIMENSION).
Возможно кто-то знает, как переписать paintComponent так, чтобы при рисовании диаметр выбирался равным ширине и длине настоящей клетки.
Метод, который рисует саму доску
/**
* Draws the state of the {@param centerPanel}
* according to current status of the {@param game}.
*
* @param pBoard
* the {@link PBoard} according to which the state
* of the centerPanel should be painted.
*/
private void drawCentralPanel(PBoard pBoard) {
for (int i = 0; i < Constants.SIZE; i++) {
for (int j = 0; j < Constants.SIZE; j++) {
if (pBoard.getSlot(i, j) == null) {
playPanel = new JPanel();
} else if (pBoard.getSlot(i, j) == Player.HUMAN) {
playPanel = new TileJPanel(Color.BLUE,
TILE_DIMENSION.width, TILE_DIMENSION.height);
} else if (pBoard.getSlot(i, j) == Player.MACHINE) {
playPanel = new TileJPanel(Color.RED,
TILE_DIMENSION.width, TILE_DIMENSION.height);
}
playPanel.setBorder(BorderFactory.
createLineBorder(Color.BLACK));
playPanel.setPreferredSize(TILE_DIMENSION);
playPanel.setBackground(VERY_DARK_GREEN);
PlayPanelMouseListener playPanelMouseListener
= new PlayPanelMouseListener();
playPanel.addMouseListener(playPanelMouseListener);
centralPanel.add(playPanel);
}
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Снова привет! у меня очень странная ошибка при запуске прилоежния(занимаюсь его декомпиляцией и модификацией) сама ошибка из logcat:
Вот часть кодаДело в том, что, если напрямую в браузере забить URL https://maps