2017-08-29 4 views
0

Ich möchte ein JEditorPane mit einer benutzerdefinierten Methode erstellen.
Eine Methode, die neuen farbigen Text an das Fenster anfügt.So fügen Sie eine Methode zu JTextPane hinzu

Code:

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

Aber Eclipse sagt die Methode nie verwendet wird, und wirft einen Fehler, wenn ich versuche, es zu nennen ... mache ich etwas falsch?

Hinzufügen der Methode zu dem Objekt wird es viel effizienter machen ... dank Helfer!

+2

Sie können diese Methoden nicht für anonyme Unterklassen hinzufügen, die über ihre Super-Typ (oder Schnittstelle) referenziert werden. Der Compiler sieht "Konsole" nur als "JTextPane" und weiß nicht, dass die Methode 'append()' für diesen Typ existiert. Wenn Sie dies wirklich tun müssen, erstellen Sie eine geeignete Unterklasse (z. B. 'MyTextPane extends JTextPane') und verwenden Sie diesen Typ auch für die Variable (z. B.' MyTextPane console = new MyTextPane(); '). – Thomas

Antwort

1

können Sie nicht append() aufrufen, weil console vom Typ JTextPane verlässt sich nicht die anonyme Klasse, wo Sie append() definiert.

Um append() außerhalb der anonymen Klasse aufrufen, müssen Sie eine Unterklasse von JTextPane erstellen.
Wenn es Sinn macht, könnte man ihm ein privates statische Klasse Mitglied der aktuellen Klasse definieren:

... 
private static class MyTextPane extends JTextPane { 

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

Ich denke, was Sie wollen, ist eine neue Klasse zu erstellen, die JTextPane erweitert und Ihre Methode dort hinzufügen.

public class MyTextPane extends JTextPane { 

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

Anscheinend erklären Sie console als JTextPane.

In der Aufgabe erstellen Sie eine "anonyme innere Klasse" erweitert JTextPane, mit der neuen Methode von Ihnen.

Wie jedoch console als JTextPane deklariert ist, weiß es nicht über Ihre Methode.

versuchen, etwas wie folgt aus:

private MyAppendingTextPane console = myAppendingTextPane(); 

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