getContentPane()需要强制转换

use*_*170 1 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();
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Eclipse,并且它给出了一个错误,建议我转换getContentPane()为返回a JPanel,但根据我的理解,这应该是它应该返回的内容.我插入System.out.println(getContentPane());并在控制台中说它返回了一个JPanel,所以我有点困惑为什么它需要被投射.这里有什么我想念的吗?谢谢.

Mic*_*ael 6

ContainerJPanel继承层次结构中的父级

getContentPane()返回a Container,在这种情况下,是一个JPanel对象.因此,需要使用强制Container类型转换为更具体的子类型,如下所示:

pane = (JPanel) getContentPane();
Run Code Online (Sandbox Code Playgroud)