Suche TagCloud Komponente für Swing

Grizzly

Top Contributor
Hallo Slawa,

bin auch gerade auf der Suche. Aber irgendwie scheint da tote Hose zu sein. Hast Du zwischenzeitlich etwas passendes gefunden?

Ansonsten würde mir nur eine Lösung über ein Panel mit FlowLayout einfallen. Dort könnte man dann die Tags als Labels reinsetzen und auf Maus-Ereignisse reagieren lassen. Natürlich müsste man die Gewichtung noch irgendwie einbauen.
 

Michael...

Top Contributor
Wenn eine simple Umsetzung ausreicht, könnte man das mittels JEditorPane implementieren. Die Begriffe werden anhand ihrer Gewichting in HTML formatiert. Um auf das Klcken zu reagieren kann man sicherlich die Hyperlink Funktionalität "missbrauchen".
 

Grizzly

Top Contributor
Wenn eine simple Umsetzung ausreicht, könnte man das mittels JEditorPane implementieren. Die Begriffe werden anhand ihrer Gewichting in HTML formatiert. Um auf das Klcken zu reagieren kann man sicherlich die Hyperlink Funktionalität "missbrauchen".

Ich muss ehrlich gesagt zugeben - obwohl doch jetzt einige Jahre Java und Swing Erfahrung habe - habe ich mit dem JEditorPane noch nicht gearbeitet. Die Idee ist mir zwar auch gekommen. Es liegt ja auch irgendwie auf der Hand. Aber ich stelle mir das anspruchsvoller von der Umsetzung her vor.
 

Michael...

Top Contributor
Habe selbst JEditorPane noch nie produktiv eingesetzt und auch nicht wirklich Erfahrung mit der Komponente.

Das ganze geht sicherlich auch objektorientierter und der Missbrauch des HyperlinkEvents eventuell eleganter.
Unschön ist der Zeilenumbruch mitten im Wort. Eventuell weiß hier jemand einen einfachen Weg der JEditorPane bzw. deren EditorKit das abzugewöhnen.
Java:
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;

public class TagCloudDemo extends JFrame {
	public TagCloudDemo() {
		final String[] topic = new String[20];
		int[] weight = new int[topic.length];
		StringBuffer buffer = new StringBuffer("<html>");
		for (int i=0; i<topic.length; i++) {
			topic[i] = "Begriff" + i;
			weight[i]=(int)(Math.random()*5 + 5);
			buffer.append("<a href=\"http://" + i + "\"><font size=\"" + weight[i] + "\">" + topic[i] + "</font></a>&nbsp;&nbsp;&nbsp;");
		}
		buffer.append("</html>");
		JEditorPane cloud = new JEditorPane("text/html", buffer.toString());
		cloud.setEditable(false);
		cloud.addHyperlinkListener(new HyperlinkListener() {
			public void hyperlinkUpdate(HyperlinkEvent e) {
				if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
					String[] target = e.getURL().toString().split("//");
					if (target.length==2) {
						int index = Integer.parseInt(target[1]);
						System.out.println("Der gewählte Begriff ist: " +topic[index]);
					}
				}
			}
		});
		this.getContentPane().add(new JScrollPane(cloud));
	}
	
	public static void main(String[] args) {
		JFrame frame = new TagCloudDemo();
		frame.setBounds(0, 0, 500, 300);
		frame.setLocationRelativeTo(null);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
	}
}
 

Grizzly

Top Contributor
[...]Unschön ist der Zeilenumbruch mitten im Wort. Eventuell weiß hier jemand einen einfachen Weg der JEditorPane bzw. deren EditorKit das abzugewöhnen.[...]
Ich habe Deinen Code getestet und natürlich hat sich bei mir genau das gleiche Probleme gezeigt. Ich habe dann wie ein Irrer im Internet gesucht und nichts gefunden. Die meisten Leute hatten das Problem anders herum: Die wollten gar keinen Umbruch, sondern dass der Text einfach nach rechts weiter läuft. :(

Am Ende habe ich mir gar nicht mehr anders zu helfen gewusst, als einmal den Inhalt von buffer in eine HTML Datei zu speichern und diese im Firefox anzuschauen. Das war sehr interessant: Der Text lief einfach bis Ultimo nach rechts weiter. Und dann ist mir ein Licht aufgegangen: Du hattest die tolle Idee per &nbsp;&nbsp;&nbsp; einen Abstand zwischen den Links zu bauen. Problem: Jetzt hängt der ganze Text am Stück. Und so wird der auch von JEditorPane, JTextPane und der Gecko Render Engine von Firefox behandelt. Nämlich am Stück. Kaum macht man die Dinger raus und einfach einen Leerschritt rein, funktioniert alles wunderbar. ;) Denn Abstand könnte man - sofern man einen größeren haben will - irgendwie über CSS lösen. :)

Trotzdem danke mal soweit. Damit wäre die Tag Cloud wohl gelöst.

Und bzgl.:
[...]Das ganze geht sicherlich auch objektorientierter und der Missbrauch des HyperlinkEvents eventuell eleganter.[...]
Ich habe Dein Beispiel als Proof-of-Concept genommen. Da ist das eh Wurst. ;)
Sicher kann man jetzt das Ganze noch schön verpacken, eine Tag Klasse basteln, die einen Listener bekommt, der dann von der Tag Cloud über den HyperlinkListener aufgerufen wird. Nicht zu vergessen, dass man noch eine Statistik über die Tags erstellen sollte, um die Gewichtung herauszubekommen.
 

Michael...

Top Contributor
Ich hatte erst ein normales Leerzeichen im Text. Um den Abstand zu vergrößern habe ich dann die Named Entities eingefügt, dass das Auswirkungen auf den Zeilenumbruch hat ist nicht aufgefallen :-(
 

slawaweis

Bekanntes Mitglied
Hallo Grizzly,

bin auch gerade auf der Suche. Aber irgendwie scheint da tote Hose zu sein. Hast Du zwischenzeitlich etwas passendes gefunden?
nein, habe es inzwischen selber geschrieben.

Ansonsten würde mir nur eine Lösung über ein Panel mit FlowLayout einfallen. Dort könnte man dann die Tags als Labels reinsetzen und auf Maus-Ereignisse reagieren lassen. Natürlich müsste man die Gewichtung noch irgendwie einbauen.
habe ich auch so gemacht, inklusive der Gewichtung. Ich habe es zuerst mit JEditorPane versucht, aber es gab zu viele Probleme und sah nicht besonders gut aus. Danach habe ich es mit einer JXPanel und JXHyperlink's gelöst. Für kleine Mengen an Tags (< 100) ist es OK, für größere Mengen wäre es nicht effektiv.

Slawa
 

slawaweis

Bekanntes Mitglied
Jetzt wäre es natürlich interessant zu wissen, auf welche Probleme Du gestoßen bist und warum es nicht besonders gut aussah. ;)

ich wollte, dass bei Mausbewegungen die Tags unter dem Mauszeiger unterstrichen werden. Das hat nicht funktioniert. Wenn man die Maus von Links nach Rechts und von Oben nach Unten bewegte, dann wurden die vorherigen Unterstriche nicht gelöscht. Es müsste das gesamte Dokument neugerendert werden. Die Tags in der Mitte zu positionieren ging auch mehr schlecht als recht. Weiterhin das Problem mit dem Umbruch mitten im Tag mit Leerzeichen.

Vielleicht kann man es sauber mit JEditorPane machen, aber nach ein paar Stunden hatte ich keine Lust mehr und habe es mit JXHyperlink gelöst, was auch schneller ging.

Slawa
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M suche geeignetes Fenster zur Anzeige AWT, Swing, JavaFX & SWT 49
-DD Lobby/Spielerliste aktualisieren bei Suche AWT, Swing, JavaFX & SWT 1
looparda Suche Lib für Visualisierung von Graphen AWT, Swing, JavaFX & SWT 12
L JavaFX Ich suche das passende Textfield Event AWT, Swing, JavaFX & SWT 1
stroggi Swing Suche nach Kurveneditor (UI-Element) AWT, Swing, JavaFX & SWT 1
J Suche nach einer horizontal aufklappbaren Toolbar AWT, Swing, JavaFX & SWT 1
Maks16 JavaFX ominöse Mails in meinem Suche Postfach von Outlook Sharepoint AWT, Swing, JavaFX & SWT 4
S JavaFX Suche Literatur für JavaFX Einstieg AWT, Swing, JavaFX & SWT 8
P LookAndFeel Suche Buch und Beispielprojekte für gute Designs AWT, Swing, JavaFX & SWT 4
L [SUCHE] Tutorial zur grafischen Nutzeroberflächengestaltung AWT, Swing, JavaFX & SWT 6
S Swing Suche Drag & Drop Beispiele AWT, Swing, JavaFX & SWT 1
K Swing Konsolen Programm in GUI - Suche Hilfe bei Konsolenausgabe AWT, Swing, JavaFX & SWT 2
M Suche Javabibliothek zum Zeichnen mathematischer Funktionen AWT, Swing, JavaFX & SWT 11
I Suche in einem Text AWT, Swing, JavaFX & SWT 4
TheWhiteShadow Swing suche passenden LayoutManager AWT, Swing, JavaFX & SWT 8
hdi LookAndFeel Suche: Substance L&F AWT, Swing, JavaFX & SWT 4
A Swing Suche Listener für beliebige Änderung an GUI Items/Controls AWT, Swing, JavaFX & SWT 8
G DB-Suche in GUI AWT, Swing, JavaFX & SWT 4
C Live Suche mit TextFeld AWT, Swing, JavaFX & SWT 2
A Swing suche OpenSource Date(Time)Picker Komponente AWT, Swing, JavaFX & SWT 9
A LookAndFeel Suche richtige Technologie für eine bestimme Desginvorlage AWT, Swing, JavaFX & SWT 5
N LayoutManager suche LayoutManager für Tabellenstruktur AWT, Swing, JavaFX & SWT 2
A Suche: Eclipse-GUI-Layout AWT, Swing, JavaFX & SWT 5
Nicer LookAndFeel Suche noch LaFs AWT, Swing, JavaFX & SWT 7
padde479 Suche eine Komponente (->ToolBar) AWT, Swing, JavaFX & SWT 7
E Swing JTree Filter Suche mit Collapse?! AWT, Swing, JavaFX & SWT 4
B Swing Suche JFileChooser zum Speichern AWT, Swing, JavaFX & SWT 2
hdi SWT Suche passenden LayoutManager AWT, Swing, JavaFX & SWT 5
Nicer LookAndFeel Suche LaFs AWT, Swing, JavaFX & SWT 12
N Suche nach Komponente / LaF AWT, Swing, JavaFX & SWT 21
V [SUCHE]GUI Programmier Tutorial[Netbeans] AWT, Swing, JavaFX & SWT 8
M Suche passende Chart Library LGPL/kommerziell AWT, Swing, JavaFX & SWT 14
E Swing Suche LayoutManager AWT, Swing, JavaFX & SWT 5
hdi Swing Suche nach passendem Layout AWT, Swing, JavaFX & SWT 8
P Suche freien Date und Time Picker AWT, Swing, JavaFX & SWT 3
hdi Swing Suche passende API Klasse(n) für meine Komponente AWT, Swing, JavaFX & SWT 8
ModellbahnerTT Suche bessere Methode AWT, Swing, JavaFX & SWT 4
M Suche Java Komponente AWT, Swing, JavaFX & SWT 2
newcron Suche die hässlichsten Swing GUIs AWT, Swing, JavaFX & SWT 4
A Suche TreeTable-Komponente AWT, Swing, JavaFX & SWT 12
C Suche fertigen HTML editor AWT, Swing, JavaFX & SWT 2
V Suche "Einblendeffekt" AWT, Swing, JavaFX & SWT 6
V Suche Komponente AWT, Swing, JavaFX & SWT 2
hdi JTable -> Suche passenden Listener AWT, Swing, JavaFX & SWT 10
D Suche Framework um Grafikprogramm zu schreiben. AWT, Swing, JavaFX & SWT 36
Q Suche "Ablaufplan" für Swing-Fensterwechsel? AWT, Swing, JavaFX & SWT 2
R Ich suche einen sehr simplen. AWT, Swing, JavaFX & SWT 2
A Suche analoge Uhr in Java AWT, Swing, JavaFX & SWT 9
M Jlist Eintrag mit suche selektieren AWT, Swing, JavaFX & SWT 4
W Suche großes vollständiges Swing GUI Beispiel nach MVC Model AWT, Swing, JavaFX & SWT 5
G Suche 2 Componenten: Splitpane ausblenden / Stecknadel AWT, Swing, JavaFX & SWT 2
B Suche eine GUI-Komponente AWT, Swing, JavaFX & SWT 2
G Listener Suche für F1 AWT, Swing, JavaFX & SWT 25
D Suche verticale Progressbar AWT, Swing, JavaFX & SWT 2
E Suche kostenloses Iconset für Swing (Ocean) AWT, Swing, JavaFX & SWT 4
M Suche Komponente für mehrere 100.000 Zeile Text AWT, Swing, JavaFX & SWT 3
C suche 1.3er - compatible Version von Swing-layout AWT, Swing, JavaFX & SWT 15
S Ich suche ein Darstellungselement AWT, Swing, JavaFX & SWT 2
T Suche Methode zum anzeigen eines Textteils im JPasswordfield AWT, Swing, JavaFX & SWT 2
N [Suche] JTree Widget/Library. AWT, Swing, JavaFX & SWT 2
M auf der suche nach einer komponente AWT, Swing, JavaFX & SWT 3
G suche Actionlistener der "Loslassen" eines Buttons AWT, Swing, JavaFX & SWT 5
G Suche Tutorial zum Thema jdbc/SQL/Select/JTable AWT, Swing, JavaFX & SWT 9
O Suche einfache Möglichkeit zum Speichern AWT, Swing, JavaFX & SWT 21
H Suche Quelltext für einen einfachen Animationsthread AWT, Swing, JavaFX & SWT 8
EagleEye suche Tutorial(s) für JTable AWT, Swing, JavaFX & SWT 2
G Suche einen KeyEvent für die Taste "ä" AWT, Swing, JavaFX & SWT 7
Maxim6394 JavaFX Scene Builder - Crash bei eigener Komponente AWT, Swing, JavaFX & SWT 2
H JDialog in Größe ändern - Resize-Cursor bleibt betreten der Komponente AWT, Swing, JavaFX & SWT 1
temi JavaFX "Frames" in JavaFx - passende Komponente? AWT, Swing, JavaFX & SWT 13
J Swing Komponente wird unpassend angepasst in der Größe AWT, Swing, JavaFX & SWT 35
M4cM4rco0707 JavaFX Custom-Komponente mit Custom-Controller AWT, Swing, JavaFX & SWT 3
J Komponente wird manchmal falsch gezeichnet AWT, Swing, JavaFX & SWT 0
R Swing Komponente im JFrame überschreinen sich AWT, Swing, JavaFX & SWT 7
Q-bert Dynamische Komponente erzeugen AWT, Swing, JavaFX & SWT 6
G vorgefertigte Buttons oder neue Komponente mit MouseListener? AWT, Swing, JavaFX & SWT 0
B Swing Update Swing Komponente bevor Methode startet. AWT, Swing, JavaFX & SWT 4
Tom299 JavaFX Ähnliche Komponente wie der VB6 Frame? AWT, Swing, JavaFX & SWT 2
M JavaFX Progressbar bar und track Komponente zur Laufzeit ändern AWT, Swing, JavaFX & SWT 2
Tort-E JavaFX Daten an WebView Komponente AWT, Swing, JavaFX & SWT 1
G JPanel komponente Löschen AWT, Swing, JavaFX & SWT 7
T Swing Index für Komponente in JPanel? AWT, Swing, JavaFX & SWT 6
T Swing Größe einer Komponente in einem BoxLayout / FlowLayout festlegen AWT, Swing, JavaFX & SWT 7
G Border der Komponente bei Table CellRenderer überschreiben AWT, Swing, JavaFX & SWT 0
P Warten auf komponente AWT, Swing, JavaFX & SWT 2
U LookAndFeel für eine Komponente AWT, Swing, JavaFX & SWT 2
E Mit Netbeans von einer Form auf eine Komponente einer anderen Form zugreifen AWT, Swing, JavaFX & SWT 2
G Zeichnen auf eine schwergewichtige Komponente? AWT, Swing, JavaFX & SWT 0
T Komponente wird nicht neu gezeichnet AWT, Swing, JavaFX & SWT 3
S Swing Komponente wird überblendet AWT, Swing, JavaFX & SWT 27
A Swing Komponente mehrseitig ausdrucken AWT, Swing, JavaFX & SWT 2
V Fertige Komponente zum Anzeigen mehrerer Bilder AWT, Swing, JavaFX & SWT 5
B Swing Komponente an Position eines Objektes ausgeben lassen AWT, Swing, JavaFX & SWT 3
R Swing Komponente austauschen AWT, Swing, JavaFX & SWT 2
M JApplet mit Java 3D Komponente AWT, Swing, JavaFX & SWT 6
M Swing JMenu verdeckt durch Komponente (aber kein AWT und Swing mix!?) AWT, Swing, JavaFX & SWT 3
N Swing Java Komponente zur Darstellung von klickbaren Links, die Java Funktionen ausführen können AWT, Swing, JavaFX & SWT 2
S Swing Eigene Komponente (JPanel) soll ChangeEvents verteilen AWT, Swing, JavaFX & SWT 12
S Spezielle komponente aktualisieren AWT, Swing, JavaFX & SWT 9
GUI-Programmer LayoutManager Kurze Layout Frage - eine komponente mittig? AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben