Как поместить изображение на ручку качания jslilder в Java? - PullRequest
1 голос
/ 26 октября 2010

Мне нужно настроить внешний вид jslider в разгаре в java. У меня есть изображение кнопки jslider. Мне нужно поместить это изображение ручки над ручкой jslider, которую мы использовали, чтобы выбрать значение из данного диапазона. Я не хочу использовать изображение ручки по умолчанию jslider. Вместо этого я хочу поместить поверх изображения свою ручку.

Пожалуйста, помогите мне, как я могу это сделать?

Спасибо Джиоти

Ответы [ 3 ]

2 голосов
/ 28 октября 2010

Извините, неправильный подход. Попробуйте что-то вроде этого:

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 );

        }

    }

}
2 голосов
/ 26 октября 2010

Подкласс JSlider, переопределите 'paintComponent ()' и сделайте вызов реализации супер, затем нарисуйте ваше изображение в соответствующем месте.

0 голосов
/ 28 октября 2010

HI All,

Большое спасибо за ответы. Я получил решение для моего вопроса. Это очень просто.

Я сделал что-то вроде этого:

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

Спасибо Джиоти

...