Swing Seitenmenü (Navigator)

Status
Nicht offen für weitere Antworten.

rbrose

Mitglied
Hallo zusammen,

ich habe folgendes Problem:

Ich habe mehrere JTree's und will die per Auswahl anzeigen.
Dazu will ich mir ein "Seitenmenü" oder wie es heißt machen.
Habe ein Screenshot angefügt damit man sieht was ich meine. Habe es rot markiert.

Wie macht man sowas? Gibt es ein Beispiel? Hat einer eine Idee?



Vielen Dank
 
Der direkte Weg wäre eine JTabbedPane und die Reiter nach links setzen:
Java:
myTabbedPane.setTabPlacement(JTabbedPane.LEFT);
 
MMhh nicht ganz. Da ich ein ToggleButton haben will, damit ich den Navigator komplett ausblenden kann.
Und die Schrift soll von unten nach oben gehen.
 
Buttontext -> Image -> Icon -> Drehen -> Draufpacken -> freuen:

Java:
public CoolToggleButton(String text) {

        this.setBackground(Color.WHITE);
        this.setSize(25, 100);
        this.setPreferredSize(this.getSize());
        
        // Fontdaten bestimmen
        Font font = getFont();
        FontMetrics fontMetrics = getFontMetrics(font);
        int fontHeight = fontMetrics.getHeight();
        int fontWidth = fontMetrics.stringWidth(text);

        // leeres BufferedImage erzeugen
        BufferedImage bufferedImage = new BufferedImage(fontHeight + 2, fontWidth + 2, BufferedImage.TYPE_INT_ARGB);

        Graphics2D g = (Graphics2D) bufferedImage.getGraphics();
        g.setFont(font);
        g.setColor(Color.BLACK);
        
        // damits schoen aussieht -> RenderHints
        g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
        
        // hier nun das eigentliche Drehen und richtig verschieben
        g.rotate(-Math.PI / 2);
        g.translate(-bufferedImage.getHeight(), bufferedImage.getWidth());
        // Text rein
        g.drawString(text, 1, -4);
        // Fertig, verpacken und setzen
        Icon icon = new ImageIcon(bufferedImage);
        this.setIcon(icon);

}
unten sind nur ein paar Sachen, damit es ein bisschen schöner wirkt. Du könntest / solltest ein bisschen mit dem Font und natürlich dann auch mit den Positionen in der drawString-Methode spielen.
Die "+2" Sachen oben müssen sein, weil sonst der Text abgeschnitten wird, wenn er unten mit drawString gesetzt wird.
 
Wenn ich mich nicht irre, haben die SwingLabs da schon viele schöne, kostenlose, fertige Dinge. Allerdings ist der Webserver gerade überlastet, schau also einfach später mal auf die Seite. Vielleicht irre ich mich auch; kann ja grad nich nachgucken. 🙂

Ebenius
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben