java - 需要强制转换的 getContentPane()

标签 java swing

我创建了一个扩展 JFrame 的类,默认情况下它会创建一个 JPanel。我试过这个:

public class Main extends JFrame {

JPanel pane;

private static final long serialVersionUID = 1L;

public Main() {

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    int WIDTH = 500, HEIGHT = 500;
    setBackground(Color.LIGHT_GRAY);
    setSize(WIDTH, HEIGHT);
    setTitle("Window");
    setLocationRelativeTo(null);

    pane = getContentPane();
}

我正在使用 Eclipse,它给出了一个错误,建议我转换 getContentPane() 以返回一个 JPanel,但据我了解,这就是它应该已经回来了。我插入了 System.out.println(getContentPane()); 并且它在控制台中说它正在返回一个 JPanel,所以我有点困惑为什么它需要转换。我在这里缺少什么吗?谢谢。

最佳答案

ContainerJPanel 继承层次结构中的父级

getContentPane() 返回一个 Container,在本例中是一个 JPanel 对象。因此,需要进行强制转换以将 Container 转换为其更具体的子类型,如下所示:

pane = (JPanel) getContentPane();

关于java - 需要强制转换的 getContentPane(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36074278/

相关文章:

java - BIRT 以编程方式从 CSV 数据源获取数据

java - 捕获 IntegrityConstraintViolationException 错误

Java:WAITINGActionEvent

java - 在 java 中为 jTabbedPane 的选项卡设置光标

Java/AWT/Swing : how to distinguish the pressed enter or return key

java - Oj 算法并发

java - 我如何获得剩余的 session 时间?

java - 内部类中的泛型

c# - 内部IP地址和外部IP地址的区别

Java - 自定义形状的可拖动 JFrame