Swing JButton 圆角边框
时间: 2024-09-26 22:08:24 浏览: 62
Swing中的JButton是一个按钮组件,如果想要让它有圆角边框,你可以通过自定义外观或者使用Java的UI工具包来实现。以下是两个常见的方法:
1. **使用`Border`**:
- 使用`CompoundBorder`或者`TitledBorder`结合`LineBorder`来创建圆角边框。例如:
```java
Border border = BorderFactory.createEmptyBorder(5, 5, 5, 5);
border = BorderFactory.createRoundedRectBorder(new Insets(0, 0, 0, 0), 10); // 设置圆角半径,单位通常是像素
JButton button = new JButton();
button.setBorder(border);
```
2. **使用Laf(Look and Feel)**:
- Java的LookAndFeel允许你改变组件的样式,包括边框。可以尝试更换一个支持圆角边框的look and feel,如`MetalLookAndFeel`或者`NimbusLookAndFeel`。但是这需要设置操作系统主题。
注意,上述代码示例适用于Java Swing环境。如果你正在使用JavaFX,那么创建圆角边框的方式会有所不同。
相关问题
jbutton设置边框为圆角矩形
您可以使用下面这段代码来设置JButton的边框为圆角矩形:
```
jbutton.setBorder(new RoundBorder(20));
```
其中,RoundBorder是自定义的一个类,代码如下:
```
import java.awt.*;
import java.awt.geom.*;
import javax.swing.border.*;
public class RoundBorder implements Border {
private int radius;
public RoundBorder(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) {
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.setColor(c.getBackground());
g2.fill(new RoundRectangle2D.Double(x, y, width - 1, height - 1, radius, radius));
g2.setColor(c.getForeground());
g2.draw(new RoundRectangle2D.Double(x, y, width - 1, height - 1, radius, radius));
}
}
```
这样,您就可以把JButton的边框设置为圆角矩形了。
JButton设置圆角
JButton可以通过设置其Border来实现圆角效果。
以下是一个示例代码:
```
import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;
public class RoundedButton extends JButton {
public RoundedButton(String text) {
super(text);
setBackground(Color.WHITE);
setForeground(Color.BLACK);
setBorder(new RoundedBorder(10));
}
private class RoundedBorder implements Border {
private int radius;
public 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.setColor(getForeground());
g.drawRoundRect(x, y, width-1, height-1, radius, radius);
}
}
public static void main(String[] args) {
JFrame frame = new JFrame("Rounded Button Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
JPanel panel = new JPanel(new FlowLayout());
panel.add(new RoundedButton("Click me!"));
frame.getContentPane().add(panel);
frame.setVisible(true);
}
}
```
该代码中,我们定义了一个RoundedButton类,继承自JButton。在构造函数中,我们设置了按钮的背景和前景色,并且将按钮的边框设置为一个自定义的RoundedBorder类。
RoundedBorder类实现了Border接口,用于绘制圆角边框。在getBorderInsets方法中,我们返回一个Insets对象,用于指定边框的大小和位置。在paintBorder方法中,我们使用Graphics对象绘制圆角边框。
最后,在main方法中,我们创建了一个JFrame和一个JPanel,并将一个RoundedButton添加到该JPanel中,最后将JPanel添加到JFrame中。运行该程序,可以看到一个带有圆角边框的按钮。
阅读全文