我有一个 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/