使用上面第一种自定义边框类时,idea里: setBorder(border);这句报错 Cannot resolve method 'setBorder' in 'CustomBorder
时间: 2024-02-04 21:02:01 浏览: 107
SDI框架边框自绘,久久未解决。
3星 · 编辑精心推荐
如果在使用自定义边框类时出现 `Cannot resolve method 'setBorder'` 的错误,可能是因为你的 `CustomBorder` 类没有继承自 `JFrame`,或者是因为你在错误的位置调用了 `setBorder()` 方法。
请确保你的 `CustomBorder` 类继承自 `JFrame`,并且在正确的位置调用 `setBorder()` 方法。以下是一个示例代码:
```java
import javax.swing.*;
import javax.swing.border.Border;
import java.awt.*;
public class CustomBorder extends JFrame {
public CustomBorder() {
setTitle("Custom Border Example");
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建自定义边框对象
Border border = new RoundedBorder(10, Color.BLUE);
// 设置 JFrame 的内容面板的边框
getContentPane().setBorder(border);
// 添加其他组件到窗口中
JLabel label = new JLabel("Hello, World!");
add(label);
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
new CustomBorder();
});
}
}
// 自定义圆角边框类
class RoundedBorder implements Border {
private int radius;
private Color color;
public RoundedBorder(int radius, Color color) {
this.radius = radius;
this.color = color;
}
@Override
public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
Graphics2D g2 = (Graphics2D) g.create();
g2.setColor(color);
g2.drawRoundRect(x, y, width - 1, height - 1, radius, radius);
g2.dispose();
}
@Override
public Insets getBorderInsets(Component c) {
return new Insets(radius, radius, radius, radius);
}
@Override
public boolean isBorderOpaque() {
return true;
}
}
```
请注意,`setBorder()` 方法被调用在 `getContentPane()` 方法之后,确保设置的是 JFrame 的内容面板的边框。希望这样能解决你的问题!
阅读全文