我想用自定义方法创建JEditorPane。
将新的彩色文本附加到窗格的方法。如何将方法添加到JTextPane
代码:
console = new JTextPane() {
public void append() {
//*****
}
};
console.append();
但是Eclipse说,该方法是从未使用过,并抛出一个错误,当我尝试调用它...我做错了什么?
将该方法添加到对象将使它更有效率...... 感谢帮助者!
我想用自定义方法创建JEditorPane。
将新的彩色文本附加到窗格的方法。如何将方法添加到JTextPane
代码:
console = new JTextPane() {
public void append() {
//*****
}
};
console.append();
但是Eclipse说,该方法是从未使用过,并抛出一个错误,当我尝试调用它...我做错了什么?
将该方法添加到对象将使它更有效率...... 感谢帮助者!
您不能调用append()
因为console
依赖JTextPane
型不是你定义append()
匿名类。
要在匿名类外调用append()
,必须创建JTextPane
的子类。
如果这是有道理的,你可以把它定义当前类的私有静态类成员:
...
private static class MyTextPane extends JTextPane {
public void append() {
// your code
}
}
...
MyTextPane myTextPane = new MyTextPane();
myTextPane.append();
我想你想要的是创建一个扩展JTextPane的新类并在那里添加你的方法。
public class MyTextPane extends JTextPane {
public void append() {
// your code
}
}
显然,你宣布console
为JTextPane
。
在作业中,您将创建一个“匿名内部类”,并使用您的新方法扩展JTextPane
。
但是,由于console
被声明为JTextPane
,因此它不知道您的方法。
尝试这样:
private MyAppendingTextPane console = myAppendingTextPane();
public static class MyAppendingTextPane extends JTextPane {
public void append(String line) { ... }
}
您不能添加方法到通过自己的超类型(或接口)引用的匿名子类。编译器只是将'console'看作是'JTextPane',并不知道该类型中存在'append()'方法。如果你真的需要这样做,创建一个合适的子类(例如'MyTextPane extends JTextPane'),并将该类型用于变量(例如'MyTextPane console = new MyTextPane();')。 – Thomas