将使用JPanel扩展的类转换为JPanel

时间:2017-06-25 13:07:00

标签: java swing class jpanel type-conversion

我想做的是,

我有一个名为'TestPanel'的类,它从JPanel扩展而来。并希望通过一种方法使其可拖动。但是方法返回JPanel类型并在编译时显示此错误。

cannot convert from JPanel to testpanel

方法不能用于返回'TestPanel'类型,因为我希望创建更多像testpanel这样的类。以下是返回JPanel的RegisterAsDraggable方法。

    public static JPanel RegisterAsDraggable(){
        final JPanel panel = new JPanel();
        ...
        return panel;
    }

这是从JPanel扩展的类。

public class testpanel extends JPanel {
    JLabel titlelabel;

    public testpanel(){
        initsettings();

        GroupLayout layout = new GroupLayout(this);
        this.setLayout(layout);
        ...
    }
}

这是我的主要课程。

public class HelloWorld extends JFrame {

    public HelloWorld(){
        initcomponent();
        ...
    }

    private void initcomponent() {
        testpanel tstpan = DragsExternal.RegisterAsDraggable();
        ...
    }

    public static void main(String[] args){
        new HelloWorld().setVisible(true);
    }
}

我删除了一些代码,因为这样做的时间不会太长。

- 编辑 -

我尝试通过将testpanel转换为JPanel来实现这一点。(根据您的回答)。但它显示了这个错误

Exception in thread "main" java.lang.ClassCastException: javax.swing.JPanel cannot be cast to testpanel

有人可以帮忙吗? 请原谅我的英文。

2 个答案:

答案 0 :(得分:0)

请帮自己一个忙:学习并遵循Java编码标准。

您只需进行一项更改:

 JPanel tstpan = DragsExternal.RegisterAsDraggable();

 testpanel tstpan = (testpanel) DragsExternal.RegisterAsDraggable();

答案 1 :(得分:0)

您需要{JAPnel cast到测试面板

private void initcomponent() {
    testpanel tstpan = (testpanel) DragsExternal.RegisterAsDraggable();
    ...
}