我想做的是,
我有一个名为'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
有人可以帮忙吗? 请原谅我的英文。
答案 0 :(得分:0)
请帮自己一个忙:学习并遵循Java编码标准。
您只需进行一项更改:
JPanel tstpan = DragsExternal.RegisterAsDraggable();
或
testpanel tstpan = (testpanel) DragsExternal.RegisterAsDraggable();
答案 1 :(得分:0)
您需要{JAPnel cast到测试面板
private void initcomponent() {
testpanel tstpan = (testpanel) DragsExternal.RegisterAsDraggable();
...
}