我需要定制jslider在swing中的外观和感觉。 我有一个jslider旋钮的图像。我需要把这个旋钮的图像放在我们用来从给定范围内选择一个值的jslider旋钮上。 我不想使用jslider的默认旋钮图像。相反,我想把自己的旋钮的图像放在它上面。如何把图像放在jslilder的swing中的旋钮在java中?
请帮我,我该怎么做?
感谢 乔蒂
我需要定制jslider在swing中的外观和感觉。 我有一个jslider旋钮的图像。我需要把这个旋钮的图像放在我们用来从给定范围内选择一个值的jslider旋钮上。 我不想使用jslider的默认旋钮图像。相反,我想把自己的旋钮的图像放在它上面。如何把图像放在jslilder的swing中的旋钮在java中?
请帮我,我该怎么做?
感谢 乔蒂
对不起,错误的做法。尝试是这样的:
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);
}
}
}
JSlider的子类,覆盖“的paintComponent()”,并以超级的实现呼叫然后绘制图像中的适当位置。
感谢您的回复。现在它显示两个旋钮。一个矿和前一个矿。而且我的图像旋钮也不动。你能告诉我该怎么做吗? – Jyoti 2010-10-26 04:45:12
为了更快地获得更好的帮助,请发布当前代码的SSCCE(http://pscode.org/sscce.html)。鉴于它使用图像,无论是在网上热链接,还是在代码中生成。 – 2010-10-26 06:09:41
大家好,
非常感谢您的答复。我为我的问题得到了解决方案。它非常简单。
我做了这样的事情:
Icon icon = new ImageIcon("slider.png");
UIDefaults defaults = UIManager.getDefaults();
defaults.put("Slider.horizontalThumbIcon", icon);
感谢 乔蒂
OP后来的问题是更好地问:http://stackoverflow.com/questions/4021191/how-to-hide-the -knob-jslider – 2010-10-26 14:13:22