JScrollBar mit eigenem look and feel

Status
Nicht offen für weitere Antworten.

redbomber

Bekanntes Mitglied
Hi zusammen,

ich möchte meine vertikale JScrollBar verändern.
Diese möchte ich selbst zeichnen, also ich stelle mir so etwas wie eine weisse navigationsleiste vor, in der sich immer wieder schwarze Striche befinden.

Dies soll in etwa die Daten in der Tabelle wiedergeben, welche sich in der JScrollPane befindet.

Muss ich um dies zu erreichen, die setUI() auf der vertical ScrollBar aufrufen, und eine eine ScrollBarUI implementieren?

Angenommen ich möchte selber etwas zeichen,
gibt es dann zb. die Möglichkeit in die VerticalScrollBar ein JPanel zu zeichnen?
 
Wenn Du für einen konkreten Anwendungsfall die ScrollBar anders zeichnen lassen möchtest, dann ist eine eigene UI-Implementation übertrieben. Wenn Du viele/alle ScrollBars anders zeichnen lassen möchtest, ist eine eigene UI-Implementierung angesagt.

Zum selber Zeichnen, einfach von JScrollBar ableiten und paintComponent(Graphics) entsprechend überschreiben.

Siehe auch: [thread=43939]Zeichnen in Swing Tutorial[/thread]

Ebenius
 
also ich muss nur eine JScrollBar verändern.

dann werde ich von der JScrollBar ableiten und dort einfach nur die paintComponent(Graphics) implementieren.

Habe ich hierbei dieselben Möglichkeiten wie wenn ich die ScrollBarUI selber implementiere?
 
Habe ich hierbei dieselben Möglichkeiten wie wenn ich die ScrollBarUI selber implementiere?
Was bedeutet diese Frage? Wenn Du paintComponent(Graphics) überschreibst, kannst Du so zeichnen wie Du willst. Das UI macht mehr als nur zeichnen. Wenn Du was anderes als zeichnen möchtest, dann musst Du ggf. andere Methoden aufrufen/überschreiben.

Ebenius
 
naja, also ich möchte z.B. auch die Buttons der Scrollbar verändern bzw. entfernen.
Ebenso den Balken nur als STrich anzeigen lassen.

Wie komme ich aber an diese Komponenten in der ScrollBar und muss ich diese dann auch einfach in der paintComponent() Methode neu zeichen?
 
Wenn Du so vieles selbst machen willst, dann ist eine eigene UI-Implementierung durchaus angesagt. Alles andere wird aufwändiger. Ich dachte, Du wolltest nur zeichnen.

Ebenius
 
Ok da bin ich gerade dabei, habe leider aber nochmals eine Frage:

folgende Methode dient dazu, den eigentlichen Scrollbalken zu zeichnen, also der Teil, der sich nach oben und unten bewegt.
Diesen wollte ich nur als einfach horizontalen Strich dargestellt haben und ich wollte dass dieser von ganz oben bis ganz nach unten geschoben werden kann, leider komme ich dabei nicht weiter:

Code:
protected void paintThumb(final Graphics g, final JComponent c, final Rectangle thumbBounds) {

        Graphics2D g2 = (Graphics2D)g;
        scrollbar.setBorder(BorderFactory.createLineBorder(Color.GREEN));

// Hirmit wollte ich diesen kompletten Scrollbalken als einen horizontalen Strich darstellen,
// aber dies funktioniert nicht
       	thumbBounds.setSize(c.getWidth(), 2);
        int x = thumbBounds.x +1;
        int y = thumbBounds.y +1;
        int w = thumbBounds.width -10;
        int h = thumbBounds.height -1;
        g.setColor(Color.BLUE);
        g.fillRect(x,y,w,h);
        
        g.setColor(Color.RED);

        // für Dicke des Positons Strichs
        g2.setStroke(new BasicStroke(4f));
        if (scrollbar.getOrientation() == JScrollBar.VERTICAL){
            g.drawLine(x,y+h/2,x+w,y+h/2);
        }else{
            g.drawLine(x+w/2,y,x+w/2,y+h);
        }

        incrButton.setOpaque(false);
        incrButton.setEnabled(true);
        decrButton.setBackground(Color.WHITE);
        incrButton.setBackground(Color.white);
       
        incrButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
        decrButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
    }

Nun meine Frage:
geht das überhaupt den kompletten verschiebbaren Balken als einen einfach Strich darzustellen?
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben