g.fillOval(1, 1, w - 3, h - 3);
g.setColor(Color.WHITE);
g.drawOval(1, 1, w - 3, h - 3);
BufferedImage img;
try {
img = ImageIO.read(this.getClass() // this --> new Painter()内部类但是也与JSlider_customized在同一文件夹
.getResource("/images/Luxun.jpg"));
g.drawImage(img, 0, 0, w, h, c); // the same for the BufferedImage when using g.drawImage(img, 0, 0, w, h, null);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
sliderDefaults.put("Slider:SliderTrack.backgroundPainter",
new Painter
public void paint(Graphics2D g, JComponent c, int w, int h) {
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g.setStroke(new BasicStroke(2f));
g.setColor(Color.GRAY);
g.fillRoundRect(0, 6, w - 1, 8, 8, 8);
g.setColor(Color.WHITE);
g.drawRoundRect(0, 6, w - 1, 8, 8, 8);
}
});
slider.putClientProperty("Nimbus.Overrides", sliderDefaults);
slider.putClientProperty("Nimbus.Overrides.InheritDefaults", false);
JSlider slider2 = new JSlider(0, 100, 50);
panel.add(slider2);
}
/**
* @param args
*/
public static void main(String[] args) {
// JFrame.setDefaultLookAndFeelDecorated(true);
JSlider_customized frame = new JSlider_customized();
// frame.setUndecorated(true);
// frame.getRootPane().setWindowDecorationStyle(JRootPane.FRAME);
frame.pack();// leaves the frame layout manager in charge of the frame
// size, so that all its contents are at or above their
// preferred sizes
// frame.setLocation(100, 100); // set the frame location
frame.setLocationRelativeTo(null); // centers a frame onscreen
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
Toolkit 的getImage 都要和MediaTracker搭配使用。BufferedImage在drawImage时是全部Loaded的,此时指定ImageObserver以及设置为null是一样的效果。