Javaでスイングのjslilderのつまみに画像を置くためにどのように?
-
26-09-2019 - |
質問
私は、JavaのスイングでJSliderののルックアンドフィールをカスタマイズする必要があります。 私はJSliderののノブのイメージを持っています。私たちは与えられた範囲から値を選択するために使用JSliderののノブの上にノブのこの画像を配置する必要があります。 私はJSliderのデフォルトのノブ画像を使用したくありません。代わりに、私はそれの上に私自身のノブの画像を配置したい。
私はこれを行うことができますどのように私を助けてください?
のおかげで ジョティ
解決
申し訳ありませんが、間違ったアプローチ。このような何かを試してみてください。
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()」とし、適切な場所に画像を描画し、スーパーの実装への呼び出しを行います。
こんにちはすべて、
の返信のためにどうもありがとう。私は私の質問のためのソリューションを得ました。その非常に単純ます。
私はこのような何かを行っています
Icon icon = new ImageIcon("slider.png");
UIDefaults defaults = UIManager.getDefaults();
defaults.put("Slider.horizontalThumbIcon", icon);
のおかげで ジョティ
所属していません StackOverflow