将输入参数赋给类是否有意义?

时间:2016-02-19 14:14:25

标签: java

我创建了一个DocumentFilter类,如下所示:

public class CustomDocumentFilter extends DocumentFilter
    {
        private StyledDocument styledDocument;
        private JTextPane panetxt;

        public CustomDocumentFilter(JTextPane panetxt) {
            this.panetxt = panetxt; // Not really necessary
            this.styledDocument = panetxt.getStyledDocument();
        } 

        private final StyleContext styleContext = StyleContext.getDefaultStyleContext();

        Pattern pattern = buildPattern(mystring);



        private Pattern buildPattern(String mystring)
        {
        StringBuilder sb = new StringBuilder();
        String[] toke = StringUtils.split(mystring,",");

        for (String token : toke) {
            sb.append("\\b"); 
            sb.append(token);
        }
        if (sb.length() > 0) {
            sb.deleteCharAt(sb.length() - 1); 
        }

        Pattern p = Pattern.compile(sb.toString());

        return p;
        }

我的问题是:如何在CustomDocumentFilter的调用中包含mystring?:

//String mystring="lalala";
((AbstractDocument) editeur.getDocument()).setDocumentFilter(new CustomDocumentFilter(editeur));

编辑:

关于乔纳森建议的第一种方式,我明白了:

error: cannot find symbol Pattern pattern = buildPattern(mystring); ^ symbol: variable mystring location: class TextEditor.CustomDocumentFilter 

我不知道它是否与Pattern子句

有关

1 个答案:

答案 0 :(得分:1)

不是100%确定描述中所需的内容。但我想你只是想问一下如何将你的本地字符串值放到你的新CustomDocumentFilter对象中。

这很简单,你有选择!我在这里展示的不仅仅是两个。 第一种简单的方法是将它添加到构造函数

public CustomDocumentFilter(JTextPane panetxt, String myString) {
  ...
  pattern = buildPattern(mystring);
}

((AbstractDocument) editeur.getDocument()).setDocumentFilter(new CustomDocumentFilter(editeur, myString));

另一种方法是使用返回对象的方法

public CustomDocumentFilter myFunction(String myString) {
  pattern = buildPattern(mystring);
  return this;
}

((AbstractDocument) editeur.getDocument()).setDocumentFilter(new CustomDocumentFilter(editeur).myFunction(myString));