我是Java的新手,我想问一个关于课程的简单问题:
我有一个类需要一个Pane的名字,之后会进一步介绍:
private final class CustomDocumentFilter extends DocumentFilter {
private final StyledDocument styledDocument = pane.getStyledDocument();
// etc etc
}
private void cree_ihm() {
Container pane = getContentPane();
((AbstractDocument) pane.getDocument()).setDocumentFilter(new CustomDocumentFilter());
// etc etc
}
这肯定不起作用,因为之后定义了窗格。我认为问题在于我并不真正理解如何处理函数中的类。环境。
非常感谢你的帮助。
答案 0 :(得分:0)
您不能在这样的字段中使用变量,因此您需要使用构造函数来执行字段分配。
java.awt.Container
返回的getContentPane()
类没有getStyledDocument()
或getDocument()
方法。你需要一个JTextPane
。
也不确定为什么你有私人课程。
public final class CustomDocumentFilter extends DocumentFilter
{
private StyledDocument styledDocument;
private JTextPane pane;
public CustomDocumentFilter(JTextPane pane) {
this.pane = pane; // Not really necessary
this.styledDocument = pane.getStyledDocument();
}
// Override some DocumentFilter methods here like insert and remove
}
我认为这个方法在某个地方的另一个类中?
private void cree_ihm() {
JTextPane pane = new JTextPane(); // <-- Get a JTextPane from somewhere
((AbstractDocument) pane.getDocument()).setDocumentFilter(new CustomDocumentFilter(pane));
}