java - 用圆圈填充 Jbutton

标签 java swing colors grid geometry

我有一个 JButton 的网格布局,我想在单击时用彩色圆圈填充每个单独的按钮。我只知道如何在单击时用文本填充 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));

如果您不喜欢它被填充,请将paintIcon方法中的g2d.fillOval更改为drawOval

关于java - 用圆圈填充 Jbutton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33036312/

相关文章:

java - JScrollPane 不起作用(MigLayout)

css - 如何防止内联 CSS 链接 "color"取消 CSS 样式表链接 "hover"?

php - 十六进制网页颜色

wpf - WPF中是否有一个 "Pens"类来补充 "Brushes"和 "Colors"?

java - Sonar 测试覆盖范围不包括间接类别

java - 有没有办法将 "alias"Java 中的一个类用于另一个类?

java - 如何更改 OO 数据库(例如 DB4O)中的模式?

java - 如何完全摆脱 JPanel 及其中的所有内容?

java - 应该使用哪种设计模式?

java - 在 JMenu 中居中文本