wie Bild auf jslilder den Knopf des Swing in Java setzen?
-
26-09-2019 - |
Frage
Ich brauche das Aussehen anpassen und von JSlider in Swing in Java fühlen. Ich habe ein Bild von Knauf JSlider. Ich brauche dieses Bild des Knopfes über JSlider des Knopf zu setzen, die wir verwenden, um einen Wert aus dem angegebenen Bereich zu wählen. Ich möchte nicht das Standard-Knopf Bild von JSlider verwenden. Stattdessen möchte ich darüber meine eigenen Knopf Bild setzen.
Bitte helfen Sie mir, wie kann ich das tun?
Danke Jyoti
Lösung
Sorry, falscher Ansatz. Probieren Sie etwas wie folgt aus:
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 );
}
}
}
Andere Tipps
Subclass JSlider, überschreiben ‚paintcomponent ()‘ und einen Anruf tätigen, um die Umsetzung des Super dann an der entsprechenden Stelle Ihr Bild zeichnen.
HALLO Alle,
Vielen Dank für die Antworten. Ich habe die Lösung für meine Frage. Es ist sehr einfach.
Ich habe etwas getan:
Icon icon = new ImageIcon("slider.png");
UIDefaults defaults = UIManager.getDefaults();
defaults.put("Slider.horizontalThumbIcon", icon);
Danke Jyoti