TA的每日心情 | 开心 2021-3-12 23:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
近期发现一个漂亮的Swing外观(Substance look & feel ),这个界面的风格非常类似于Windows XP界面风格,如果你觉得你的Swing界面比较ugly的话,不妨试一试这个(look & feel)外观。要求JDK为5.0及以上,Substance look & feel下载地址:
https://substance.dev.java.net/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文件中。
附图片:
一个演示的例子:
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" |
|