Привет, я только начал программировать небольшую игру и использовать java JButtons, я создал наследуемый класс JButton с переопределенным компонентом рисования, каждая из этих кнопок помещена в JPanel с разметкой сетки, а внешний вид кнопок по умолчанию, за исключением первой кнопки (в верхнем левом углу), как заставить каждую кнопку рисовать, как я определил ее в моем методе paintcomponent? На данный момент я использую два класса:
package main;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class World {
private Square[][] map;
public World() {
// Panels settings
JPanel mapHUD = new JPanel();
mapHUD.setPreferredSize(new Dimension(400, 400));
mapHUD.setLayout(new GridLayout(8, 8));
JPanel blueTeamHUD = new JPanel();
blueTeamHUD.setPreferredSize(new Dimension(100, 400));
JPanel redTeamHUD = new JPanel();
redTeamHUD.setPreferredSize(new Dimension(100, 400));
JPanel spellsHUD = new JPanel();
spellsHUD.setPreferredSize(new Dimension(600, 200));
// Map settings
map = new Square[8][8];
for (int j = 0; j < 8; j++)
for (int i = 0; i < 8; i++) {
map[i][j] = new Square(i, j, i + "" + j);
mapHUD.add(map[i][j]);
}
// Frame settings
JFrame frame = new JFrame();
frame.setTitle("Koko");
frame.setSize(600, 600);
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setLayout(new BorderLayout());
frame.getContentPane().add(mapHUD, BorderLayout.CENTER);
frame.getContentPane().add(blueTeamHUD, BorderLayout.WEST);
frame.getContentPane().add(redTeamHUD, BorderLayout.EAST);
frame.getContentPane().add(spellsHUD, BorderLayout.SOUTH);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
package main;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JButton;
public class Square extends JButton implements MouseListener {
private static final long serialVersionUID = 1L;
private int x;
private int y;
public Square(int x, int y, String name) {
super(name);
this.addMouseListener(this);
this.x = x;
this.y = y;
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.setPaint(Color.BLACK);
g2.fillRect((int) this.getLocation().getX(), (int) this.getLocation().getY(), this.getWidth(),
this.getHeight());
}
// MouseListener methods
@Override
public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
this.setBackground(Color.BLACK);
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
this.setBackground(Color.RED);
}
@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
}