diff --git a/src/view/CheckersCanvas.java b/src/view/CheckersCanvas.java index 085dd87..8e7292c 100644 --- a/src/view/CheckersCanvas.java +++ b/src/view/CheckersCanvas.java @@ -32,6 +32,7 @@ public void initSquares() { if (i % 2 == 0) { for (int j = 0; j < BOARD_DIM/2; ++j) { Square black = new Square(Color.BLACK, i, j*2); + black.add(new GUIPiece(Color.WHITE)); Square red = new Square(Color.RED, i, j*2 + 1); this.add(black); blackSquares.add(black); diff --git a/src/view/GUIPiece.java b/src/view/GUIPiece.java new file mode 100644 index 0000000..72c121e --- /dev/null +++ b/src/view/GUIPiece.java @@ -0,0 +1,36 @@ +package view; + +import java.awt.Color; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.RenderingHints; + +import javax.swing.JButton; + +public class GUIPiece extends JButton { + private Color color; + + public GUIPiece(Color color) { + super(""); + this.color = color; + this.setContentAreaFilled(false); + this.setBorderPainted(false); + } + + protected void paintComponent(Graphics g) { + if (getModel().isArmed()) { + g.setColor(color); + } else { + g.setColor(getBackground()); + } + Graphics2D g2 = (Graphics2D)g; + RenderingHints hints = new RenderingHints(null); + hints.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + hints.put(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC); + hints.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); + g2.setRenderingHints(hints); + g2.fillOval(0, 0, getSize().width,getSize().height-1); + super.paintComponent(g2); + } + +} diff --git a/src/view/RoundedBorder.java b/src/view/RoundedBorder.java new file mode 100644 index 0000000..e93a279 --- /dev/null +++ b/src/view/RoundedBorder.java @@ -0,0 +1,32 @@ +package view; + +import java.awt.Component; +import java.awt.Graphics; +import java.awt.Insets; + +import javax.swing.border.Border; + +public class RoundedBorder implements Border { + + private int radius; + + + RoundedBorder(int radius) { + this.radius = radius; + } + + + public Insets getBorderInsets(Component c) { + return new Insets(this.radius+1, this.radius+1, this.radius+2, this.radius); + } + + + public boolean isBorderOpaque() { + return true; + } + + + public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) { + g.drawRoundRect(x, y, width-2, height-2, radius, radius); + } +} diff --git a/src/view/Square.java b/src/view/Square.java index fa9bb6f..1b54205 100644 --- a/src/view/Square.java +++ b/src/view/Square.java @@ -1,6 +1,8 @@ package view; +import java.awt.BorderLayout; import java.awt.Color; +import java.awt.Dimension; import javax.swing.JButton; @@ -8,6 +10,7 @@ public class Square extends JButton { private Color color; private int row; private int column; + private GUIPiece piece; public Square(Color color, int row, int column) { super(""); @@ -15,6 +18,8 @@ public Square(Color color, int row, int column) { this.setRow(row); this.setColumn(column); this.setBackground(color); + this.setLayout(new BorderLayout()); + //this.setPreferredSize(new Dimension(100, 100)); } public int getRow() { @@ -33,5 +38,13 @@ public void setColumn(int column) { this.column = column; } + public GUIPiece getPiece() { + return piece; + } + + public void setPiece(GUIPiece piece) { + this.piece = piece; + } + }