?? swingcomponent.java
字號:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
/**
* Description:
* <br/>Copyright (C), 2005-2008, Yeeku.H.Lee
* <br/>This program is protected by copyright laws.
* <br/>Program Name:
* <br/>Date:
* @author Yeeku.H.Lee kongyeeku@163.com
* @version 1.0
*/
public class SwingComponent
{
JFrame f = new JFrame("測試");
//定義一個按鈕,并為之指定圖標
Icon okIcon = new ImageIcon("ico/ok.png");
JButton ok = new JButton("確認" , okIcon);
//定義一個單選按鈕,初始處于選中狀態
JRadioButton male = new JRadioButton("男" , true);
//定義一個單按鈕,初始處于沒有選中狀態
JRadioButton female = new JRadioButton("女" , false);
//定義一個ButtonGroup,用于將上面兩個JRadioButton組合在一起
ButtonGroup bg = new ButtonGroup();
//定義一個復選框,初始處于沒有選中狀態。
JCheckBox married = new JCheckBox("是否已婚?" , false);
String[] colors = new String[]{"紅色" , "綠色" , "藍色"};
//定義一個下拉選擇框
JComboBox colorChooser = new JComboBox(colors);
//定義一個列表選擇框
JList colorList = new JList(colors);
//定義一個8行、20列的多行文本域
JTextArea ta = new JTextArea(8, 20);
//定義一個40列的單行文本域
JTextField name = new JTextField(40);
JMenuBar mb = new JMenuBar();
JMenu file = new JMenu("文件");
JMenu edit = new JMenu("編輯");
//創建“新建”菜單項,并為之指定圖標
Icon newIcon = new ImageIcon("ico/new.png");
JMenuItem newItem = new JMenuItem("新建" , newIcon);
//創建“保存”菜單項,并為之指定圖標
Icon saveIcon = new ImageIcon("ico/save.png");
JMenuItem saveItem = new JMenuItem("保存" , saveIcon);
//創建“退出”菜單項,并為之指定圖標
Icon exitIcon = new ImageIcon("ico/exit.png");
JMenuItem exitItem = new JMenuItem("退出" , exitIcon);
JCheckBoxMenuItem autoWrap = new JCheckBoxMenuItem("自動換行");
//創建“復制”菜單項,并為之指定圖標
JMenuItem copyItem = new JMenuItem("復制" , new ImageIcon("ico/copy.png"));
//創建“粘貼”菜單項,并為之指定圖標
JMenuItem pasteItem = new JMenuItem("粘貼" , new ImageIcon("ico/paste.png"));
JMenu format = new JMenu("格式");
JMenuItem commentItem = new JMenuItem("注釋");
JMenuItem cancelItem = new JMenuItem("取消注釋");
//定義一個右鍵菜單用于設置程序風格
JPopupMenu pop = new JPopupMenu();
//用于組合三個風格菜單項的ButtonGroup
ButtonGroup flavorGroup = new ButtonGroup();
//創建三個單選框按鈕,用于設定程序的外觀風格
JRadioButtonMenuItem metalItem = new JRadioButtonMenuItem("Metal風格" , true);
JRadioButtonMenuItem windowsItem = new JRadioButtonMenuItem("Windows風格");
JRadioButtonMenuItem motifItem = new JRadioButtonMenuItem("Motif風格");
public void init()
{
//創建一個裝載了文本框、按鈕的JPanel
JPanel bottom = new JPanel();
bottom.add(name);
bottom.add(ok);
f.add(bottom , BorderLayout.SOUTH);
//創建一個裝載了下拉選擇框、三個JCheckBox的JPanel
JPanel checkPanel = new JPanel();
checkPanel.add(colorChooser);
bg.add(male);
bg.add(female);
checkPanel.add(male);
checkPanel.add(female);
checkPanel.add(married);
//創建一個垂直排列組件的Box,盛裝多行文本域JPanel
Box topLeft = Box.createVerticalBox();
//使用JScrollPane作為普通組件的JViewPort
JScrollPane taJsp = new JScrollPane(ta);
topLeft.add(taJsp);
topLeft.add(checkPanel);
//創建一個垂直排列組件的Box,盛裝topLeft、colorList
Box top = Box.createHorizontalBox();
top.add(topLeft);
top.add(colorList);
//將top Box容器添加到窗口的中間
f.add(top);
//-----------下面開始組合菜單、并為菜單添加事件監聽器----------
//為newItem設置快捷鍵,設置快捷鍵時要使用大寫字母
newItem.setAccelerator(KeyStroke.getKeyStroke('N' , InputEvent.CTRL_MASK));
newItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
ta.append("用戶單擊了“新建”菜單\n");
}
});
//為file菜單添加菜單項
file.add(newItem);
file.add(saveItem);
file.add(exitItem);
//為edit菜單添加菜單項
edit.add(autoWrap);
//使用addSeparator方法來添加菜單分隔線
edit.addSeparator();
edit.add(copyItem);
edit.add(pasteItem);
commentItem.setToolTipText("將程序代碼注釋起來!");
//為format菜單添加菜單項
format.add(commentItem);
format.add(cancelItem);
//使用添加new JMenuItem("-")的方式不能添加菜單分隔符
edit.add(new JMenuItem("-"));
//將format菜單組合到edit菜單中,從而形成二級菜單
edit.add(format);
//將file、edit菜單添加到mb菜單條中
mb.add(file);
mb.add(edit);
//為f窗口設置菜單條
f.setJMenuBar(mb);
//-----------下面開始組合右鍵菜單、并安裝右鍵菜單----------
flavorGroup.add(metalItem);
flavorGroup.add(windowsItem);
flavorGroup.add(motifItem);
pop.add(metalItem);
pop.add(windowsItem);
pop.add(motifItem);
//為三個菜單創建事件監聽器
ActionListener flavorListener = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
try
{
if (e.getActionCommand().equals("Metal風格"))
{
changeFlavor(1);
}
else if (e.getActionCommand().equals("Windows風格"))
{
changeFlavor(2);
}
else if (e.getActionCommand().equals("Motif風格"))
{
changeFlavor(3);
}
}
catch (Exception ee)
{
ee.printStackTrace();
}
}
};
//為三個菜單添加事件監聽器
metalItem.addActionListener(flavorListener);
windowsItem.addActionListener(flavorListener);
motifItem.addActionListener(flavorListener);
//調用該方法即可設置右鍵菜單,無需使用事件機制
ta.setComponentPopupMenu(pop);
//設置關閉窗口時,退出程序
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.pack();
f.setVisible(true);
}
//定義一個方法,用于改變界面風格
private void changeFlavor(int flavor)throws Exception
{
switch (flavor)
{
//設置Metal風格
case 1:
UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
break;
//設置Windows風格
case 2:
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
break;
//設置Motif風格
case 3:
UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
break;
}
//更新f窗口內頂級容器以及內部所有組件的UI
SwingUtilities.updateComponentTreeUI(f.getContentPane());
//更新mb菜單條以及內部所有組件的UI
SwingUtilities.updateComponentTreeUI(mb);
//更新pop右鍵菜單以及內部所有組件的UI
SwingUtilities.updateComponentTreeUI(pop);
}
public static void main(String[] args)
{
//設置Swing窗口使用Java風格
JFrame.setDefaultLookAndFeelDecorated(true);
new SwingComponent().init();
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -