近期发现一个漂亮的Swing外观(Substance look & feel ),这个界面的风格非常类似于Windows XP界面风格,如果你觉得你的Swing界面比较ugly的话,不妨试一试这个(look & feel)外观。要求JDK为5.0及以上,Substance look & feel下载地址:https://substance.dev./servlets/ProjectDocumentList?folderID=3172&expandFolder=3172&folderID=0。这个项目对中文界面显示支持不是很好,需要把SubstanceLookAndFeel.java中的字体设置为宋体等,否则不支持界面中的汉字显示。 具体办法是: 1.打开源代码,修改包:org.jvnet.substance下的SubstanceLookAndFeel.java 中initComponentDefaults()方法中的字体设置. 2.把Font tahomaPlain11 = new Font("Tahoma", Font.PLAIN, 11); 改为Font tahomaPlain11 = new Font("宋体", Font.PLAIN, 11);等. 3.重新编译整个工程,然后把SubstanceLookAndFeel.class文件加到substance.jar文件中。 附图片: 没有办法上传substance.jar文件,因为这文件大于500k. 一个演示的例子: package com.lanyou.swing.basic; import java.awt.BorderLayout; import java.awt.Color; import javax.swing.JColorChooser; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JTextField; import javax.swing.JButton; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; import org.jvnet.substance.SubstanceLookAndFeel; /******************************************************************************* * 演示颜色对话框的使用 * * @author Administrator * */ public class ColorDialog extends JDialog { private JPanel jContentPane = null; private JPanel jPanel = null; private JLabel jLabel = null; private JTextField jTextField = null; private Color color = null; private JButton jCloseButton = null; /** * This method initializes jPanel * * @return javax.swing.JPanel */ private JPanel getJPanel() { if (jPanel == null) { jLabel = new JLabel(); jLabel.setBounds(new java.awt.Rectangle(30, 46, 105, 30)); jLabel.setText("选择对话框颜色:"); jPanel = new JPanel(); jPanel.setLayout(null); jPanel.add(jLabel, null); jPanel.add(getJTextField(), null); jPanel.add(getJCloseButton(), null); } return jPanel; } /** * This method initializes jTextField * * @return javax.swing.JTextField */ private JTextField getJTextField() { if (jTextField == null) { jTextField = new JTextField(); jTextField.setBounds(new java.awt.Rectangle(164, 46, 120, 31)); jTextField.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent e) { color = JColorChooser.showDialog(null, "文本颜色", Color.GREEN); if (color == null) return; ColorDialog.this.jTextField.setBackground(color); } }); } return jTextField; } /** * This method initializes jCloseButton * * @return javax.swing.JButton */ private JButton getJCloseButton() { if (jCloseButton == null) { jCloseButton = new JButton(); jCloseButton.setBounds(new java.awt.Rectangle(107, 92, 80, 36)); jCloseButton.setText("关闭"); jCloseButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { dispose(); } }); } return jCloseButton; } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub ColorDialog dialog = new ColorDialog(); // dialog.setDefaultCloseOperation(JDialog.EXIT_ON_CLOSE); dialog.setVisible(true); } /** * This is the default constructor */ public ColorDialog() { super(); initialize(); } /** * This method initializes this * * @return void */ private void initialize() { try { UIManager.setLookAndFeel(new SubstanceLookAndFeel()); } catch (UnsupportedLookAndFeelException e) { e.printStackTrace(); } this.setLocation(250, 200); this.setSize(326, 173); this.setTitle("颜色对话框"); this.setContentPane(getJContentPane()); } /** * This method initializes jContentPane * * @return javax.swing.JPanel */ private JPanel getJContentPane() { if (jContentPane == null) { jContentPane = new JPanel(); jContentPane.setLayout(new BorderLayout()); jContentPane.add(getJPanel(), java.awt.BorderLayout.CENTER); } return jContentPane; } } // @jve:decl-index=0:visual-constraint="10,10" |
|