📄 aboutdialog.java
字号:
/*
* AboutDialog.java 1.0 2003-06-25
*
* Copyleft (c) 2003 RatKing.
*/
package jmine;
import java.awt.*;
import java.awt.event.*;
import java.text.NumberFormat;
import javax.swing.*;
/**
* “关于”对话框
*
* @author <a href="ratking@ynet.com">RatKing</a>
* @version 1.0
*/
public class AboutDialog extends JDialog {
public static final String metalLookAndFeel = "javax.swing.plaf.metal.MetalLookAndFeel";
public static final String windozLookAndFeel = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
public static final String motifLookAndFeel = "com.sun.java.swing.plaf.motif.MotifLookAndFeel";
private JMine jMine;
Font font = jMine.defaultFont;
MineProps mineProps = jMine.mineProps;
JTabbedPane tabbedPane = new JTabbedPane();
JPanel panel1 = new JPanel(new BorderLayout());
JPanel panel2 = new JPanel();
JPanel panel3 = new JPanel();
JPanel panel4 = new JPanel();
JPanel logoPanel = new JPanel();
JPanel infoPanel = new JPanel();
JPanel bottomPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
JLabel logoLabel = new JLabel();
JLabel appName = new JLabel("jMine 扫雷");
JLabel version = new JLabel("版本:1.0");
JLabel copyright = new JLabel("<html>Copyleft (c) 2003 RatKing.<br>All wrongs reserved.</html>");
JLabel author = new JLabel("作者:ratking@ynet.com");
JLabel memory = new JLabel();
JComboBox lookAndFeelComboBox = new JComboBox();
JLabel lookAndFeelLabel = new JLabel("外观感觉:");
String metal = MineProps.METAL; // "Metal"
String windoz = MineProps.WINDOZ; // "Windoz"
String motif = MineProps.MOTIF; // "Motif"
JButton okButton = new JButton("确定(O)");
public AboutDialog(JMine jMine) {
this(jMine, jMine.frame);
}
public AboutDialog(JMine jMine, Frame owner) {
super(owner, "关于扫雷", true);
this.jMine = jMine;
init();
}
private void init() {
// JLabel logo = new JLabel(new ImageIcon(
// Toolkit.getDefaultToolkit().getImage("images/mine.png")));
logoLabel.setIcon(jMine.createImageIcon("mine.png", "地雷图标"));
logoLabel.setVerticalAlignment(SwingConstants.TOP);
memory.setText("Java虚拟机的总内存:"
+
NumberFormat.getInstance().format(Runtime.getRuntime().
totalMemory() / 1024)
+ " KB");
lookAndFeelComboBox.addItem(metal);
lookAndFeelComboBox.addItem(windoz);
lookAndFeelComboBox.addItem(motif);
if (mineProps.lookAndFeel.equals(MineProps.METAL)) {
lookAndFeelComboBox.setSelectedItem(metal);
}
if (mineProps.lookAndFeel.equals(MineProps.WINDOZ)) {
lookAndFeelComboBox.setSelectedItem(windoz);
}
if (mineProps.lookAndFeel.equals(MineProps.MOTIF)) {
lookAndFeelComboBox.setSelectedItem(motif);
}
lookAndFeelComboBox.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if (e.getItem() == metal) {
updateLookAndFeel(metalLookAndFeel);
mineProps.lookAndFeel = MineProps.METAL;
}
else if (e.getItem() == windoz) {
updateLookAndFeel(windozLookAndFeel);
mineProps.lookAndFeel = MineProps.WINDOZ;
}
else if (e.getItem() == motif) {
updateLookAndFeel(motifLookAndFeel);
mineProps.lookAndFeel = MineProps.MOTIF;
}
}
});
okButton.setMnemonic(KeyEvent.VK_O);
okButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dispose();
}
});
// 设置字体
appName.setFont(new Font(font.getName(), Font.BOLD, font.getSize() + 2));
version.setFont(font);
copyright.setFont(font);
author.setFont(font);
memory.setFont(font);
lookAndFeelComboBox.setFont(font);
okButton.setFont(font);
// 组装在一起
logoLabel.setBorder(BorderFactory.createEmptyBorder(10, 30, 10, 30));
logoPanel.add(logoLabel);
infoPanel.setLayout(new BoxLayout(infoPanel, BoxLayout.Y_AXIS));
infoPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
infoPanel.add(appName);
infoPanel.add(version);
infoPanel.add(copyright);
infoPanel.add(author);
infoPanel.add(new JSeparator());
infoPanel.add(memory);
panel4.add(lookAndFeelLabel, null);
panel4.add(lookAndFeelComboBox, null);
bottomPanel.add(okButton);
panel1.add(logoPanel, BorderLayout.WEST);
panel1.add(infoPanel, BorderLayout.CENTER);
tabbedPane.add(panel1, "程序");
tabbedPane.add(panel2, "版权");
tabbedPane.add(panel3, "系统");
tabbedPane.add(panel4, "选项");
Container contentPane = getContentPane();
contentPane.add(tabbedPane, BorderLayout.CENTER);
contentPane.add(bottomPanel, BorderLayout.SOUTH);
getRootPane().setDefaultButton(okButton);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
//setResizable(false);
pack();
}
/** 改变程序的外观感觉 */
private void updateLookAndFeel(String lf) {
try {
UIManager.setLookAndFeel(lf);
SwingUtilities.updateComponentTreeUI(this);
this.pack();
if (jMine.isStandalone) {
SwingUtilities.updateComponentTreeUI(jMine.frame);
jMine.frame.pack();
}
else {
SwingUtilities.updateComponentTreeUI(jMine.instance);
}
}
catch (Exception exc) {
System.err.println("载入外观感觉失败:" + exc);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -