📄 swingdemos.java
字号:
/*
* $Header$
* $Date$
* $Revision$
* Copyright (C) 2003-2004 CIC, Tsinghua Univ.
*/
package jcase.gui.swing;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Properties;
import javax.swing.*;
import jcase.gui.DefaultWindowListener;
/**
* SwingDemos
*/
public class SwingDemos extends BaseSwingDemo implements ActionListener,Runnable{
JTabbedPane tabpane;
JToolBar toolbar;
JMenu demoMenu;
/**
* @see jcase.gui.swing.BaseSwingDemo#init()
*/
protected void init() {
setLayout(new BorderLayout());
toolbar = new JToolBar();
add(toolbar,BorderLayout.NORTH);
tabpane = new JTabbedPane();
add(tabpane,BorderLayout.CENTER);
demoMenu = new JMenu("示例");
}
/**
* @see jcase.gui.swing.BaseSwingDemo#getTitle()
*/
public String getTitle() {
return "Swing组件演示";
}
private JMenuBar createMenuBar(){
JMenuBar menubar = new JMenuBar();
JMenu file = menubar.add(new JMenu("文件"));
file.add(new JMenuItem("打开")).addActionListener(this);
file.add(new JMenuItem("退出")).addActionListener(this);
menubar.add(demoMenu);
JMenu help = menubar.add(new JMenu("帮助"));
help.add(new JMenuItem("关于...")).addActionListener(this);
return menubar;
}
public static void main(String[] args) {
SwingDemos demo = new SwingDemos();
javax.swing.JFrame frm = new javax.swing.JFrame(demo.getTitle());
frm.setJMenuBar(demo.createMenuBar());
frm.getContentPane().add(demo);
frm.pack();
frm.show();
frm.addWindowListener(new DefaultWindowListener());
new Thread(demo).start();
}
/**
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
*/
public void actionPerformed(ActionEvent e) {
String command=e.getActionCommand();
if(command.equals("退出")){
System.exit(0);
}else if(command.endsWith("关于...")){
String about="<html><b>Swing组件演示程序</b><br>" +
"版本 1.0 (2004年4月)<br>" +
"联系作者 <a href=\"mailto:xiefengbo@tsinghua.org.cn\">xiefengbo@tsinghua.org.cn</a><br>" +
"清华大学计算中心</html>";
JOptionPane.showMessageDialog(this,about);
}
else{
JOptionPane.showMessageDialog(this,"您选择了\""+command+"\"");
}
}
/**
* @see java.lang.Runnable#run()
*/
public void run() {
Properties demos = new Properties();
try {
demos.load(getClass().getResourceAsStream("/jcase/gui/resources/swingdemos.properties"));
} catch (Exception ioe) {
JOptionPane.showMessageDialog(this,"无法读取/jcase/gui/resources/swingdemos.properties文件!",
"IO错误",JOptionPane.ERROR_MESSAGE);
return;
}
List list = new ArrayList(demos.keySet());
Collections.sort(list);
for(int i=0;i<list.size();i++){
String demoname=(String)list.get(i);
try{
BaseSwingDemo demo=(BaseSwingDemo)Class.forName(demoname).newInstance();
ImageIcon icon = createImageIcon(demos.getProperty(demoname));
Action action=new DemoAction(demo,icon,this);
toolbar.add(action);
demoMenu.add(action);
if(i==0){
showDemo(demo);
}
}catch(Exception e){
System.out.println("无法实例化演示:"+demoname);
System.out.println(e);
}
}
}
public ImageIcon createImageIcon(String path) {
URL img =getClass().getResource(path);
if(null==img)
img=getClass().getResource("/jcase/gui/resources/bean.gif");
return new ImageIcon(img);
}
/**
* @see java.awt.Component#getPreferredSize()
*/
public Dimension getPreferredSize() {
return new Dimension(800,600);
}
public void showDemo(BaseSwingDemo demo){
tabpane.removeAll();
tabpane.addTab(demo.getTitle(),demo);
HtmlDemo htmlDemo = new HtmlDemo(demo.getClass().getName());
tabpane.addTab(htmlDemo.getTitle(),htmlDemo);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -