ERLEDIGT
NEIN
NEIN
ANTWORTEN
11
11
ZUGRIFFE
1865
1865
EMPFEHLEN
-
01.02.06 19:24 #1
- Registriert seit
- Aug 2004
- Beiträge
- 73
Hallo zusammen!
Ich möchte innerhalb von JTextPanes Buttons einfügen, die die Form von Pfeilen haben (entweder nach links oder rechts) und mit unterschiedlich langen Strings beschriftet sind.
Die Größe der Buttons passt sich ja automatisch der Stringlänge an, aber kann ich auch irgendwie ihr Aussehen verändern?
Oder sind Buttons da nicht die richtige Wahl? Ich brauche auf jeden Fall auch so etwas wie ein onMouseOver-Event o.ä.
Gibt es bessere Alternativen?
Bin für jeden Hinweis dankbar!
Gruß,
Peter
-
01.02.06 19:48 #2MeinerEiner_80 Tutorials.de Gastzugang
servus!
Ich lass mich da gerne korrigieren, aber die Form der Buttons kannst du meines Wissens nicht ändern.
Wie wäre es stattdessen mit Buttons ohne Rand, mit derselben Hintergrundfarbe wie das Textpane. Den könnte man ja ein Icon in Form eines Pfeiles un dem entsprechenden Schriftzug geben. Ist ein wenig umständlich, weil du für jeden String einen anderen beschrifteten Pfeil benötigst.
Vielleicht fällt ja jemanden noch etwas besseres ein?
*grüssle*
MeinerEiner
-
Hallo Peter,
hast du eine Entwicklungsumgebung für Java installiert? Ich benutze selbst eclipse und es ist mir eine sehr große Hilfe. Ich tue in eclipse einfach ein neues JButton erzeugen:
JButton button1 = new JButton();
Wenn ich jetzt "button1." in eclispe eintippe zeigt er mir sämtliche Methoden und Attribute die für JButton zur Verfügung stehen. Diese Auswahl kann ich durchgehen und das gewünschte auswählen. Auch zeigt eclipse für jede einzelne Methode mal weniger mal mehr ausführliche Kommentare aus dem Java SDK Dokument. Eine Swingkomponente hat zumeist soviele Einstellungsmöglichkeiten das man Sie gar nicht alle auswendig wissen könnte. Dies ist durch eine mächtige Entwicklungsumgebung wie eclipse oder vergleichbare auch nicht notwendig, wie schon oben beschrieben.
Für Mouseover-Effekte gibt es in Java den MouseListener.
Hier ein paar Links für JButton:
Sun Java Tutorial - How to Use Buttons, Check Boxes, and Radio Buttons
Java Almanac - JButton
MouseListener:
Sun Java Tutorial - MouseListener
Dies müsste dir erstmal einwenig weiterhelfen.
Vg Erdal
-
Hatte Thomas da nicht mal einen Link gepostet von jroller.com wo 3D Buttons erstellt wurden? Und haben Buttons nicht auch einen UIManager den man evt. überschreiben/modifizeiren kann?
-
03.02.06 11:44 #5
- Registriert seit
- Aug 2004
- Beiträge
- 73
Hallo nochmal,
in einer ersten Näherung habe ich folgende Zwischenlösung gefunden, mit der ich allerdings noch nicht so richtig glücklich bin:
Dies erzeugt einen Button, der den Schriftzug "quote" (links auf dem Button) und einen Pfeil (rechts auf dem Button) besitzt.Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
ImageIcon arrow_icon = null; String path = "images/right_arrow.gif"; String label = "quote"; java.net.URL imgURL = TextSamplerDemo.class.getResource(path); if (imgURL != null) { arrow_icon = new ImageIcon(imgURL); } else { System.err.println("Couldn't find file: " + path); } JButton button = new JButton(); if (arrow_icon != null) { button.setBackground(Color.WHITE); button.setText(label); button.setIcon(arrow_icon); }
Am liebsten hätte ich nach wie vor Buttons (oder etwas Ähnliches!) in der Form eines Pfeiles anstatt Buttons mit einem Pfeil-Icon drin. Wenn da jemand noch Ideen hat, wäre das super!
Wenn ich im Prinzip mit der oben gezeigten Lösung leben muss, hätte ich noch 2 Fragen:
- Ist es möglich, die Position von Schrift und Icon auf dem Button zu verändern, d.h. dass der Pfeil nach rechts und die Schrit nach links kommt?
- Wie verändere ich die Größe eines Buttons? (merkwürdigerweise bekomme ich bei button.getHeight(); oder auch button.getSize(); immer nur 0.0 als Werte ...?)
Schöne Grüße,
Peter
-
Hallo Peter,
Das Icon ist standardmäßig auf der linken Seite. Mit dem folgenden Befehl kannst du die Reihenfolge vertauschen.
button.setHorizontalTextPosition(AbstractButton.LEADING);
Für die Größe kannst du folgendes verwenden:
Dimension d = new Dimension(200,200);
button.setPreferredSize(d);
Es gibt noch vielmehr Möglichkeiten. Du kannst das Icon über oder unter den Text plazieren. Oder den Abstand zwischen Text und Icon ändern.
Rollovereffekt:
button.setRolloverEnabled(true);
button.setRolloverIcon(icon2);
Aber das mit der Pfeilform ist so ohne weiteres mit dem Java SDK nicht zu realisieren. Du must dir schon eine eigene Komponente schreiben, oder eine externe java library finden die solches anbietet.
Vg Erdal
-
03.02.06 20:08 #7
- Registriert seit
- Aug 2004
- Beiträge
- 73
Hallo Erdal und alle,
Das funktioniert super! Danke!
Zitat von flashray
Hier habe ich Schwierigkeiten.
Zitat von flashray
Ich kann den Button nicht viel kleiner machen, ohne dass die Schrift abgeschnitten wird. D.h. die Frage ist, ob ich auch die Schriftgröße eines Buttons ändern kann?
Ein weiteres Problem:
Auch wenn der Button kleiner wird, scheint er innerhalb einer Textzeile immer zu tief zu hängen, er schließt also nicht mit der unteren Kante des Textes ab, sondern hängt etwas runter ... (drücke ich mich verständlich aus?)
Kann man das auch verändern?
Und - diese Anforderung habe ich noch ganz vergessen zu erwähnen:
Ist es möglich, zu verhindern, dass der Button innerhalb des TextPanes gelöscht wird? Eine Funktion wie isEditable() hat JButton jedenfalls nicht ...
... was vielleicht auch daran liegt, dass JButtons nicht unbedingt für das gemacht sind, für das ich sie jetzt verwenden möchte!
Das führt mich wiederum zu der Frage:
Sind Buttons überhaupt der richtige Weg oder gibt es vielleicht eine bessere Alternative?
Hier nochmal kurz die Anforderungsbeschreibung:
- Ich möchte - unterschiedlich beschriftete - Pfeile (nach links und rechts zeigend) in einen editierbaren TextPane einfügen können [diese Pfeile stehen für XML-Tags, die der Benutzer nicht zu Gesicht bekommen soll --> vgl. eine Ansicht vom XML-Editor XMetal!]
- Bei einem onMouseOver soll eine Aktion ausgelöst werden [damit in separatem Fenster Attribut-Informationen angezeigt werden können]
- Die Pfeile sollen nicht zu löschen sein (muss ich da eher beim TextPane schauen? Kann es sein, dass man bestimmte Textteile als uneditierbar setzen kann, oder geht das nur für den gesamten Text?)
Sind jetzt doch sehr viele Fragen geworden!
Vielen Dank für jede Antwort!
Viele Grüße und schönes WE,
Peter
-
Hallo Peter,
kannst du mal bitte einen Screenshot vom XMetal mit den Pfeilen uploaden?
Vg Erdal
-
Klar das kannst du z.b. über den Font machen
Zitat von peter_mueller
wobei hier noch die FontMetric zu erwähnen sind mit denen man die u.a. Informationen über die Schriftart bekommen kann, so kannst du die grösse deiner Buttons dynamisch anpassen..Code :1
Font font = new Font(String name, int style, int size)
sorry ich verstehe nicht so ganz was du meinst..Ein weiteres Problem:
Auch wenn der Button kleiner wird, scheint er innerhalb einer Textzeile immer zu tief zu hängen, er schließt also nicht mit der unteren Kante des Textes ab, sondern hängt etwas runter ... (drücke ich mich verständlich aus?)
Kann man das auch verändern?
Wieso sollte ein Button gelöscht werden? Wenn er nicht editierbar sein soll benutzeUnd - diese Anforderung habe ich noch ganz vergessen zu erwähnen:
Ist es möglich, zu verhindern, dass der Button innerhalb des TextPanes gelöscht wird? Eine Funktion wie isEditable() hat JButton jedenfalls nicht ...
Code :1
deinButton.setEnabled(false);
hier verstehe ich dich auch nicht so ganz, willst du Pfeile IN einer JTextPane haben(also in dem Berreich wo normalerweise der Text steht)... was vielleicht auch daran liegt, dass JButtons nicht unbedingt für das gemacht sind, für das ich sie jetzt verwenden möchte!
Das führt mich wiederum zu der Frage:
Sind Buttons überhaupt der richtige Weg oder gibt es vielleicht eine bessere Alternative?
Hier nochmal kurz die Anforderungsbeschreibung:
[LIST=1][*]Ich möchte - unterschiedlich beschriftete - Pfeile (nach links und rechts zeigend) in einen editierbaren TextPane einfügen können [diese Pfeile stehen für XML-Tags, die der Benutzer nicht zu Gesicht bekommen soll --> vgl. eine Ansicht vom XML-Editor XMetal!]
unter Umständen schau dir doch mal folgenden Link an
http://www.java2s.com/ExampleCode/Sw...plications.htm
das ist ein recht einfaches Beispiel wie man Einfluss auf den UIManager nehmen kann, vielleicht ist das der bessere Weg...
mfg
elmato
-
04.02.06 14:18 #10
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
Weshalb verwendest du nicht einfach den JEditorPane? Dort kannst du auch grafische Elemente einfügen und auf Mouse/Keyboard-Events reagieren.
Gruss TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
08.02.06 14:27 #11
- Registriert seit
- Aug 2004
- Beiträge
- 73
Hallo zusammen,
erstmal danke für die vielen Ratschläge!
Leider habe ich diese Woche sehr viel um die Ohren, so dass ich - wie es aussieht - erst in der nächsten Woche dazu kommen werde, ihnen nachzugehen, aber ich will hiermit zumindest schonmal einen Screenshot von XMetal posten, um einige Missverständnisse darüber auszuräumen, wo die Buttons hin sollen.
Im Prinzip möchte ich etwas nachbauen, was so aussieht wie auf dem Screenshot. Die Pfeile sollen also IM TEXT auftauchen und dürfen nicht gelöscht werden können!

Der Screenshot ist leider in ziemlich schlechter Qualität!
In den Pfeilen stehen jeweils die Namen von den XML-Elementen, die verwendet werden.
Vielen Dank für Eure Ideen und schöne Grüße,
Peter
-
13.02.06 12:03 #12
- Registriert seit
- Aug 2004
- Beiträge
- 73
Ähnliche Themen
-
CMD verändern
Von Skini im Forum C/C++Antworten: 0Letzter Beitrag: 25.09.09, 14:46 -
Arbeitsoberfläche verändern
Von pickup im Forum Cinema 4DAntworten: 3Letzter Beitrag: 11.05.07, 18:47 -
Styleeigenschaften verändern
Von SeeSharpNewBee im Forum Javascript & AjaxAntworten: 8Letzter Beitrag: 10.05.07, 22:45 -
Datei per FTP verändern.
Von ICPUI im Forum PHPAntworten: 4Letzter Beitrag: 02.05.07, 18:03 -
fps verändern
Von genesys im Forum Videoschnitt, Videotechnik & -produktionAntworten: 0Letzter Beitrag: 22.05.04, 17:27





Zitieren


Login





