用圆圈填充Jbutton



我有一个JButton s的网格布局,我想在单击时用彩色圆圈填充每个单独的按钮。我只知道如何填写一个JButton与文本点击时,我该怎么做呢?

这是我的代码,点击时,而不是使用setText("")我想用圆圈填充按钮。

public void actionPerformed(ActionEvent e) {
            for(int r = 0; r < row; r++){
                for(int c = 0; c < col; c++){
                    if (board[row][col] == e.getSource()){
                            int temp = game.dropDiskAt(c);
                            game.dropDiskAt(c);
                            board[temp][c].setText("");
                        }

这可能是一个解决方案

import java.awt.Component;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Paint;
import java.awt.RenderingHints;
import javax.swing.Icon;
public class ColorIconRound implements Icon {
private int size;
private Paint color;
public ColorIconRound(int size, Paint color) {
    this.size = size;
    this.color = color;
}
@Override
public void paintIcon(Component c, Graphics g, int x, int y) {
    Graphics2D g2d = (Graphics2D) g;
    Paint op = g2d.getPaint();
    g2d.setRenderingHint(
        RenderingHints.KEY_ANTIALIASING,
        RenderingHints.VALUE_ANTIALIAS_ON);
    g2d.setPaint(color);
    g2d.fillOval(x, y, size, size);
    g2d.setPaint(op);
}
@Override
public int getIconWidth() {
    return size;
}
@Override
public int getIconHeight() {
    return size;
}
}

然后像这样设置按钮图标:

board[temp][c].setIcon(new ColorIconRound(12,Color.WHITE));

如果你不喜欢它的填充将g2d.fillOval更改为drawOval在paintIcon方法

最新更新