tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
11
ZUGRIFFE
1865
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    peter_mueller peter_mueller ist offline Mitglied Silber
    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
     

  2. #2
    MeinerEiner_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
     

  3. #3
    flashray flashray ist offline Mitglied Rubin
    Registriert seit
    Sep 2005
    Ort
    Mannheim
    Beiträge
    1.325
    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
     

  4. #4
    elmato elmato ist offline Mitglied Brokat
    Registriert seit
    May 2005
    Ort
    NRW
    Beiträge
    408
    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?
     

  5. #5
    peter_mueller peter_mueller ist offline Mitglied Silber
    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:

    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);
            }
    Dies erzeugt einen Button, der den Schriftzug "quote" (links auf dem Button) und einen Pfeil (rechts auf dem Button) besitzt.

    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:
    1. 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?
    2. 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 ...?)
    Vielen Dank für Eure Hilfe!

    Schöne Grüße,
    Peter
     

  6. #6
    flashray flashray ist offline Mitglied Rubin
    Registriert seit
    Sep 2005
    Ort
    Mannheim
    Beiträge
    1.325
    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
     

  7. #7
    peter_mueller peter_mueller ist offline Mitglied Silber
    Registriert seit
    Aug 2004
    Beiträge
    73
    Hallo Erdal und alle,

    Zitat Zitat von flashray
    button.setHorizontalTextPosition(AbstractButton.LEADING);
    Das funktioniert super! Danke!

    Zitat Zitat von flashray
    Für die Größe kannst du folgendes verwenden:

    Dimension d = new Dimension(200,200);
    button.setPreferredSize(d);
    Hier habe ich Schwierigkeiten.
    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:
    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!]
    2. Bei einem onMouseOver soll eine Aktion ausgelöst werden [damit in separatem Fenster Attribut-Informationen angezeigt werden können]
    3. 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?)
    Wie gesagt - ich bin nicht so sicher, ob Buttons da überhaupt der sinnvollste Weg sind! Irgendwelche Ideen?

    Sind jetzt doch sehr viele Fragen geworden!

    Vielen Dank für jede Antwort!

    Viele Grüße und schönes WE,
    Peter
     

  8. #8
    flashray flashray ist offline Mitglied Rubin
    Registriert seit
    Sep 2005
    Ort
    Mannheim
    Beiträge
    1.325
    Hallo Peter,

    kannst du mal bitte einen Screenshot vom XMetal mit den Pfeilen uploaden?

    Vg Erdal
     

  9. #9
    elmato elmato ist offline Mitglied Brokat
    Registriert seit
    May 2005
    Ort
    NRW
    Beiträge
    408
    Zitat Zitat von peter_mueller
    Hier habe ich Schwierigkeiten.
    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?
    Klar das kannst du z.b. über den Font machen
    Code :
    1
    
    Font font = new Font(String name, int style, int size)
    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..
    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?
    sorry ich verstehe nicht so ganz was du meinst..
    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 ...
    Wieso sollte ein Button gelöscht werden? Wenn er nicht editierbar sein soll benutze
    Code :
    1
    
    deinButton.setEnabled(false);
    ... 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!]
    hier verstehe ich dich auch nicht so ganz, willst du Pfeile IN einer JTextPane haben(also in dem Berreich wo normalerweise der Text steht)
    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
     

  10. #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 Tom
     
    Java 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

  11. #11
    peter_mueller peter_mueller ist offline Mitglied Silber
    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!

    Buttonaussehen verändern?-xmetal_sreenshot.jpg

    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
     

  12. #12
    peter_mueller peter_mueller ist offline Mitglied Silber
    Registriert seit
    Aug 2004
    Beiträge
    73
    Hallo nochmal,

    Zitat Zitat von peter_mueller
    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?
    Zitat Zitat von elmato
    sorry ich verstehe nicht so ganz was du meinst..
    Ich hänge mal einen Screenshot an, um das Problem zu verdeutlichen ...

    Buttonaussehen verändern?-nach_unten_haengender_button.jpg

    Und wenn jemand noch eine Idee für schönere Pfeile hat, als ich sie hier erstmal realisiert habe - ich bin für jeden Tipp dankbar!

    Vielen Dank nochmal für Eure Hilfe,
    Peter
     

Ähnliche Themen

  1. CMD verändern
    Von Skini im Forum C/C++
    Antworten: 0
    Letzter Beitrag: 25.09.09, 14:46
  2. Arbeitsoberfläche verändern
    Von pickup im Forum Cinema 4D
    Antworten: 3
    Letzter Beitrag: 11.05.07, 18:47
  3. Styleeigenschaften verändern
    Von SeeSharpNewBee im Forum Javascript & Ajax
    Antworten: 8
    Letzter Beitrag: 10.05.07, 22:45
  4. Datei per FTP verändern.
    Von ICPUI im Forum PHP
    Antworten: 4
    Letzter Beitrag: 02.05.07, 18:03
  5. fps verändern
    Von genesys im Forum Videoschnitt, Videotechnik & -produktion
    Antworten: 0
    Letzter Beitrag: 22.05.04, 17:27