我需要在java的swing中自定义jslider的外观和感觉。我有一个jslider旋钮的图像。我需要把这个旋钮的图像放在jslider的旋钮上,我们用它从给定的范围中选择一个值。我不想使用默认的jslider旋钮图像。相反,我想把我自己的旋钮的图像放在上面。
请帮帮我,我该怎么做呢?
谢谢Jyoti
发布于 2010-10-28 10:37:53
抱歉,这是错误的方法。尝试如下所示:
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 );
}
}
}发布于 2010-10-26 12:02:18
子类JSlider,重写'paintComponent()‘并调用超级的实现,然后在适当的地方绘制你的图像。
发布于 2010-10-28 14:44:38
大家好,
非常感谢你的回复。我找到了我的问题的答案。这很简单。
我做过这样的事情:
Icon icon = new ImageIcon("slider.png");
UIDefaults defaults = UIManager.getDefaults();
defaults.put("Slider.horizontalThumbIcon", icon);谢谢Jyoti
https://stackoverflow.com/questions/4020591
复制相似问题