getContentPane().setBorder(border);报错Cannot resolve method 'setBorder' in 'CustomBorder
时间: 2024-02-03 08:04:13 浏览: 167
如果在 `getContentPane().setBorder(border)` 中出现 `Cannot resolve method 'Border'` 的错误,可能是因为 `getContentPane()` 方法返回的是一个 `Container` 对象,而 `Container` 并没有 `setBorder()` 方法。
解决该问题的方法是将 `getContentPane()` 返回的 `Container` 对象转换为 `JPanel`,然后再调用 `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);
// 获取内容面板
Container contentPane = getContentPane();
// 将内容面板转换为 JPanel,并设置边框
JPanel panel = new JPanel();
panel.setBorder(border);
// 添加其他组件到 JPanel 中
JLabel label = new JLabel("Hello, World!");
panel.add(label);
// 将 JPanel 添加到内容面板
contentPane.add(panel);
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;
}
}
```
通过将内容面板转换为 JPanel,并在 JPanel 上设置边框,可以解决 `Cannot resolve method 'setBorder'` 的错误。希望这样能解决你的问题!
阅读全文