2017-08-29 73 views
0

我想用自定义方法创建JEditorPane。
将新的彩色文本附加到窗格的方法。如何将方法添加到JTextPane

代码:

console = new JTextPane() { 
    public void append() { 
     //***** 
    } 
}; 
console.append(); 

但是Eclipse说,该方法是从未使用过,并抛出一个错误,当我尝试调用它...我做错了什么?

将该方法添加到对象将使它更有效率...... 感谢帮助者!

+2

您不能添加方法到通过自己的超类型(或接口)引用的匿名子类。编译器只是将'console'看作是'JTextPane',并不知道该类型中存在'append()'方法。如果你真的需要这样做,创建一个合适的子类(例如'MyTextPane extends JTextPane'),并将该类型用于变量(例如'MyTextPane console = new MyTextPane();')。 – Thomas

回答

1

您不能调用append()因为console依赖JTextPane型不是你定义append()匿名类。

要在匿名类外调用append(),必须创建JTextPane的子类。
如果这是有道理的,你可以把它定义当前类的私有静态类成员:

... 
private static class MyTextPane extends JTextPane { 

    public void append() { 
    // your code 
    } 
} 
... 
MyTextPane myTextPane = new MyTextPane(); 
myTextPane.append(); 
0

我想你想要的是创建一个扩展JTextPane的新类并在那里添加你的方法。

public class MyTextPane extends JTextPane { 

    public void append() { 
    // your code 
    } 
} 
0

显然,你宣布consoleJTextPane

在作业中,您将创建一个“匿名内部类”,并使用您的新方法扩展JTextPane

但是,由于console被声明为JTextPane,因此它不知道您的方法。

尝试这样:

private MyAppendingTextPane console = myAppendingTextPane(); 

public static class MyAppendingTextPane extends JTextPane { 
    public void append(String line) { ... } 
}