Domanda

Ho bisogno di personalizzare l'aspetto grafico di JSlider in altalena in java. Ho un'immagine di noce di JSlider. Ho bisogno di mettere questa immagine di manopola sopra la manopola del JSlider che abbiamo usato per selezionare un valore della gamma data. Non voglio utilizzare l'immagine Perno di default di JSlider. Invece voglio mettere la mia immagine della manopola su di esso.

Si prega di aiutarmi come posso fare questo?

Grazie Jyoti

È stato utile?

Soluzione

Siamo spiacenti, approccio sbagliato. Provare qualcosa di simile:

package java_sandbox;

import javax.imageio.ImageIO;
import javax.swing.JSlider;
import javax.swing.SwingUtilities;
import javax.swing.JFrame;
import javax.swing.plaf.basic.BasicSliderUI;

import java.awt.*;

import java.io.File;
import java.io.IOException;


public class CustomSliderKnob {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new CustomSliderKnob(); 
            }
        });
    }

    public CustomSliderKnob() {

        JFrame f = new JFrame( "Swing Slider Knob" );
        f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); 


        Container p = f.getContentPane();
        JSlider s = new JSlider();

        s.setUI( new mySliderUI( s ) );

        p.add( s );

        f.pack();
        f.setVisible(true);
    } 

    private class mySliderUI extends BasicSliderUI {

        Image knobImage;

        public mySliderUI( JSlider aSlider ) {

            super( aSlider );

            try {
                this.knobImage = ImageIO.read( new File( "d:\\d.jpg") );

            } catch ( IOException e ) {

                e.printStackTrace();
            }
        }
        public void paintThumb(Graphics g)  {        

            g.drawImage( this.knobImage, thumbRect.x, thumbRect.y, 8, 8, null );

        }

    }

}

Altri suggerimenti

sottoclasse JSlider, override 'paintComponent ()' e fare una chiamata per l'implementazione del super-quindi attirare la vostra immagine nel luogo appropriato.

Ciao a tutti,

Grazie mille per le risposte. Ho la soluzione per la mia domanda. E 'molto semplice.

Ho fatto qualcosa di simile:

Icon icon = new ImageIcon("slider.png");
        UIDefaults defaults = UIManager.getDefaults();
        defaults.put("Slider.horizontalThumbIcon", icon);

Grazie Jyoti

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top