2017-08-29 6 views
0

Je souhaite créer un JEditorPane avec une méthode personnalisée.
Une méthode qui ajoute un nouveau texte coloré au volet.Comment ajouter une méthode à JTextPane

code:

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

Mais éclipse dit la méthode est jamais utilisée et renvoie une erreur lorsque je tente de l'appeler ... je fais quelque chose de mal? L'ajout de la méthode à l'objet le rendra beaucoup plus efficace ... grâce aux aides!

+2

Vous ne pouvez pas ajouter des méthodes aux sous-classes anonymes qui sont référencés par leur type super (ou interface). Le compilateur voit juste 'console' comme un' JTextPane' et ne sait pas que la méthode 'append()' existe sur ce type. Si vous devez vraiment le faire, créez une sous-classe appropriée (par exemple, 'MyTextPane extends JTextPane') et utilisez également ce type pour la variable (par exemple' MyTextPane console = new MyTextPane(); '). – Thomas

Répondre

1

Vous ne pouvez pas invoquer append() parce console repose sur le type JTextPane pas la classe anonyme où vous avez défini append().

Pour appeler append() en dehors de la classe anonyme, vous devez créer une sous-classe de JTextPane.
S'il est logique, vous pouvez définir un membre de classe statique privée de la classe actuelle:

... 
private static class MyTextPane extends JTextPane { 

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

Je pense que ce que vous voulez est de créer une nouvelle classe qui étend JTextPane et y ajoute votre méthode.

public class MyTextPane extends JTextPane { 

    public void append() { 
    // your code 
    } 
} 
0

Apparemment, vous avez déclaré que consoleJTextPane.

Dans l'affectation, vous créez une "classe interne anonyme" qui s'étend sur JTextPane, avec votre nouvelle méthode. Cependant, étant donné que console est déclaré JTextPane, il ne connaît pas votre méthode.

Essayez quelque chose comme ceci:

private MyAppendingTextPane console = myAppendingTextPane(); 

public static class MyAppendingTextPane extends JTextPane { 
    public void append(String line) { ... } 
}