ive는 JPanels를 사용하여 Reversi 용 기본 GUI를 작성하여 GridLayout에서 보드를 나타냅니다. 조각이 재생되는 순간 클릭 된 사각형이 색상을 변경합니다. 나는 원형 조각을 바꾸고 대신 배경을 똑같이 유지하려고 노력했다.Java Swing을 사용하여 Reversi GUI 용 재생 피스 생성
Ive가 꽤 많이 검색되어이를 수행 할 방법을 찾을 수없는 것 같습니다.
- 편집 됨
생성자의 코드입니다. 조각이 마우스 리스너를 재생하면 바로 보드
Public boardGUI(int num){
game = new reversiGame(num, false);
Dimension boardSize = new Dimension(600, 600);
numSquares = num;
layeredPane = new JLayeredPane();
getContentPane().add(layeredPane);
layeredPane.setPreferredSize(boardSize);
layeredPane.addMouseListener(this);
board = new JPanel();
layeredPane.add(board, JLayeredPane.DEFAULT_LAYER);
board.setLayout(new GridLayout(numSquares, numSquares));
board.setPreferredSize(boardSize);
board.setBounds(0, 0, boardSize.width, boardSize.height);
for (int i = 0; i < (numSquares * numSquares); i++) {
JPanel square = new JPanel(new BorderLayout());
square.setBorder(BorderFactory.createLineBorder(Color.black));
square.setBackground(Color.green);
board.add(square);
int row = (i/numSquares);
int col = (i % numSquares);
if ((row + 1 == numSquares/2 & col + 1 == numSquares/2) || row == numSquares/2 & col == numSquares/2){
square.setBackground(Color.white);
}
if ((row + 1 == numSquares/2 & col == numSquares/2) || row == numSquares/2 & col + 1 == numSquares/2){
square.setBackground(Color.black);
}
}
}
에게
public void updateBoard(){
int x = 0;
int y = 0;
ImageIcon black = new ImageIcon("Images/large-black-sphere.ico");
ImageIcon white = new ImageIcon("Images/large-white-sphere.ico");
for(int i = 0; i < numSquares; i++){
for(int j = 0; j < numSquares; j++){
x = i * (600/numSquares);
y = j * (600/numSquares);
Component c = board.findComponentAt(x, y);
GridType g = game.getGridType(i, j);
if (g.equals(GridType.WHITE)){
JPanel temp = (JPanel) board.getComponent(i + j);
piece = new JLabel(white);
temp.add(piece);
//c.setBackground(Color.white);
}
else if(g.equals(GridType.BLACK)){
JPanel temp = (JPanel)board.getComponent(i + j);
piece = new JLabel(black);
temp.add(piece);
//c.setBackground(Color.black);
}
else{
//c.setBackground(Color.GREEN);
}
}
}
}
사용중인 코드 또는 우리를 도울 수있는 코드를 보여주십시오. 정보가 충분하지 않습니다. – Deco
한 가지 방법은 JPanel 또는 다른 JComponent의 paintComponent 메소드에서 타원을 그리거나 그리지 않는 것입니다. 요점은 게임 로직을 게임 GUI와 분리하고 논리 또는 모델을 기반으로 어떤 원을 그려야하는지 결정하는 것입니다. –