Swing定制Button

来源:互联网 发布:3d软件培训班 编辑:程序博客网 时间:2024/05/08 21:25

package themedemo;import java.awt.BasicStroke;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Graphics2D;import java.awt.GridLayout;import java.awt.RenderingHints;import java.util.Map;import javax.swing.BorderFactory;import javax.swing.JButton;import javax.swing.JComponent;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.Painter;import javax.swing.SwingUtilities;import javax.swing.UIDefaults;import javax.swing.UIManager;import javax.swing.WindowConstants;public class ButtonSkinDemo {public static void main(String[] args) {SwingUtilities.invokeLater(new Runnable() {public void run() {for (UIManager.LookAndFeelInfo laf : UIManager.getInstalledLookAndFeels()) {if ("Nimbus".equals(laf.getName())) {try {UIManager.setLookAndFeel(laf.getClassName());} catch (Exception e) {e.printStackTrace();}}}for (Map.Entry<Object, Object> entry : UIManager.getLookAndFeelDefaults().entrySet()) {if ((entry.getKey().toString()).startsWith("Button")) {System.out.println(entry.getKey() + " = "+ entry.getValue());}}JFrame frame = new JFrame("Button Skining Demo");frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);frame.getContentPane().setLayout(new BorderLayout());JPanel panel = new JPanel(new GridLayout(0, 1, 20, 20));panel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));panel.setBackground(Color.darkGray);UIDefaults buttonDefaults = new UIDefaults();buttonDefaults.put("Button.backgroundPainter",new Painter<JComponent>() {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.WHITE);g.fillRoundRect(0, 0, w - 2, h - 2, 8, 8);g.setColor(Color.LIGHT_GRAY);g.drawRoundRect(0, 0, w - 2, h - 2, 8, 8);}});buttonDefaults.put("Button[Pressed].backgroundPainter",new Painter<JComponent>() {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.LIGHT_GRAY);g.fillRoundRect(0, 0, w - 2, h - 2, 8, 8);}});JButton button = new JButton("myButton");panel.add(button);button.putClientProperty("Nimbus.Overrides", buttonDefaults);button.putClientProperty("Nimbus.Overrides.InheritDefaults",false);// Add a normal themed slider for comparisonJButton normalButton = new JButton("normalButton");panel.add(normalButton);frame.getContentPane().add(panel, BorderLayout.CENTER);frame.pack();frame.setLocationRelativeTo(null);frame.setVisible(true);}});}}

0 0