在类之间共享变量 - 窗格构造函数

时间:2016-02-08 10:08:07

标签: java

我是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
}

这肯定不起作用,因为之后定义了窗格。我认为问题在于我并不真正理解如何处理函数中的类。环境。

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

  1. 您不能在这样的字段中使用变量,因此您需要使用构造函数来执行字段分配。

  2. java.awt.Container返回的getContentPane()类没有getStyledDocument()getDocument()方法。你需要一个JTextPane

  3. 也不确定为什么你有私人课程。

    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));
    
    }