【问题标题】:How to add method to JTextPane如何将方法添加到 JTextPane
【发布时间】:2017-08-29 12:45:22
【问题描述】:

我想用自定义方法创建一个 JEditorPane。
一种将新的彩色文本附加到窗格的方法。

代码:

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

但是 Eclipse 说该方法从未使用过,并且当我尝试调用它时会引发错误......我做错了什么吗?

将方法添加到对象将使其效率更高... 感谢帮助!

【问题讨论】:

  • 您不能将方法添加到通过其超类型(或接口)引用的匿名子类。编译器只是将console 视为JTextPane 并且不知道该类型上存在append() 方法。如果您确实需要这样做,请创建一个适当的子类(例如MyTextPane extends JTextPane)并将该类型也用于变量(例如MyTextPane console = new MyTextPane();)。

标签: java swing object methods jtextpane


【解决方案1】:

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

要在匿名类之外调用append(),您必须创建JTextPane 的子类。
如果有意义,您可以将其定义为当前类的私有静态类成员:

...
private static class MyTextPane extends JTextPane {

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

【讨论】:

    【解决方案2】:

    我认为您想要的是创建扩展 JTextPane 的新类并在那里添加您的方法。

    public class MyTextPane extends JTextPane {
    
      public void append() {
        // your code 
      }
    }
    

    【讨论】:

      【解决方案3】:

      显然您将console 声明为JTextPane

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

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

      试试这样的:

      private MyAppendingTextPane console = myAppendingTextPane();
      
      public static class MyAppendingTextPane extends JTextPane {
        public void append(String line) { ... }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-02-04
        • 2012-02-25
        • 2015-11-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-13
        • 1970-01-01
        相关资源
        最近更新 更多