getAttributeNames()

Status
Nicht offen für weitere Antworten.

Enigma228

Bekanntes Mitglied
Hallo ich stelle mich wahrscheinlich wieder zu ... an..
verwendet wird ein JTextPane soll am Ende eine Art Word werden..

Ich habe eine SimpleAttributeSet attr für den Text.

ich wollte wissen, was in attr enthalten ist.

um das aufzuschlüsseln habe ich

public Enumeration<?> getAttributeNames()

aber irgendwie stelle ich mich zu ... an um die Enumeration aufzuschlüsseln..

hat jemand Hilfe für mich?
Danke
Thomas
 
Zuletzt bearbeitet:

diggaa1984

Top Contributor
hab das mal damit gelöst:
Java:
for (Enumeration<EditorStyleModel.StyleName> keys = styleTable.keys(); keys.hasMoreElements();) {
	key = keys.nextElement();
	newStyle = styleTable.get(key);
	styleContext.getStyle(key.getLabel()).addAttributes(newStyle);
}//for

willst du eventuell nur ein paar bestimmte Attribute prüfen, dann kannst du auch über die StyleConstants-Klasse gehen:
Java:
Color actualColor = StyleConstants.getForeground(styleTable.get(selectedStyle)); 

//oder wenn du mit Style arbeitest (erbt von MutualAttributeSet)
styleContext.getStyle(EditorStyleModel.GENERALFONTSTYLE_NAME).getAttribute(StyleConstants.Family)
 

Enigma228

Bekanntes Mitglied
Habe mir das mal genauer angesehen und folgende Fragen:

Du verwendest EditorStyleModel.StyleName in der Enumeration! woher kommt dieses ist nicht in Java Docs also irgendwann von irgendwas abgeleitet?
Woher kommt die styleTable? (für mich ganz wichtig)
Woher kommt newStyle?

Sorry ich kann daraus leider nichts erkennen?

Kannst du ein bisschen mehr ins Detail gehen?
 

diggaa1984

Top Contributor
es sollte ja nur verdeutlichen wie du über die Enumeration iterieren kannst .. sprich aufschlüsseln :D .. welche Objekte in der Enumeration liegen spielt dazu ja keine Rolle das kannst du ja selbst für dein Problem anpassen. In meinem Fall habe ich in der Enumeration Werte aus einem Enum (EditorStyleModel.StyleNames). NewStyle ist bei mir eine Variable, welche aktuelle Einstellungen für das Syntaxhighlighting aus dem table liest. Dieser table merkt sich die temporären Einstellungen, damit ich diese später nach Beenden des Dialogs über "OK" übernehmen kann :D

Die letzte Anweisung der Schleife (welche im OK-ActionListener liegt) speichert dann diese temporären Einstellungen in dem eigentlichen Model fürs Syntaxhighlighting ab.

So ... viel zu viel Input für die eigentlich Frage :D .. was genau klappt denn noch nicht, bzw was verstehst du unter aufschlüsseln?
 

Enigma228

Bekanntes Mitglied
Ich habe eine SimpleAttributeSet attr für den Text.

Nun möchte ich aufschlüsseln was alles drin ist.
dazu benutze ich die Funktion

attr.getAttributeNames();
welche eine Enumeration als Rückgabewert hat.
Und diese Werte die in diese Enumeration enthalten sind möchte ich ausgeben.
deine Enumeration hätte mir geholfen, wenn ich gewusst hätte welche Typen in der Enumeration drin sind.

leider gibt die JavaDoc das ganze so an:
getAttributeNames

public Enumeration<?> getAttributeNames()

Gets the names of the attributes in the set.

Specified by:
getAttributeNames in interface AttributeSet

Returns:
the names as an Enumeration

Dadurch weiss ich nicht (oder bin zu blöde) wie ich die Enumeration durchgehen soll.
 

diggaa1984

Top Contributor
hm also im Code ist die Datenstruktur welche sich die Attribute bei einem AttributeSet merkt nicht näher spezifiziert, es handelt sich dabei um
Code:
Hashtable table = new Hashtable
.. also keinerlei Typparameter .. hineingepackt werden nur Objects .. musst du also davon ausgehen und vielleicht klappts
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben