圆形JButton
时间: 2023-12-03 19:47:47 浏览: 71
Java圆形按钮实例代码,含注释
要创建一个圆形的JButton,可以使用Java的Graphics2D类和Shape接口来实现。以下是一个简单的示例代码:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;
public class CircularButton extends JButton {
public CircularButton(String label) {
super(label);
// 设置按钮大小和边距
Dimension size = getPreferredSize();
size.width = size.height = Math.max(size.width, size.height);
setPreferredSize(size);
setMargin(new Insets(0, 0, 0, 0));
// 设置按钮不画边框和背景
setContentAreaFilled(false);
}
// 绘制圆形按钮
protected void paintComponent(Graphics g) {
if (getModel().isArmed()) {
// 按钮被按下时绘制灰色圆形
g.setColor(Color.gray);
} else {
// 按钮未被按下时绘制白色圆形
g.setColor(Color.white);
}
g.fillOval(0, 0, getSize().width - 1, getSize().height - 1);
super.paintComponent(g);
}
// 绘制圆形边框
protected void paintBorder(Graphics g) {
g.setColor(getForeground());
g.drawOval(0, 0, getSize().width - 1, getSize().height - 1);
}
// 判断是否在圆形区域内
Shape shape;
public boolean contains(int x, int y) {
if (shape == null || !shape.getBounds().equals(getBounds())) {
shape = new Ellipse2D.Float(0, 0, getWidth(), getHeight());
}
return shape.contains(x, y);
}
// 测试
public static void main(String[] args) {
JFrame frame = new JFrame("Circular Button");
frame.setLayout(new FlowLayout());
frame.setSize(300, 200);
CircularButton button = new CircularButton("Click me!");
frame.add(button);
frame.setVisible(true);
}
}
```
在这个示例中,我们重写了JButton的paintComponent和paintBorder方法来实现绘制圆形按钮。contains方法用于判断鼠标是否在圆形区域内。最后,在测试代码中创建了一个CircularButton并添加到JFrame中。
阅读全文