第二章只是展示一下Java都能做些什么,这里是一个窗口程序,功能是可以查看图片。
先上源代码
package v1_chapter2;
import java.awt.EventQueue;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
/*
* an image viewer program
* @author not Halfish Zhang
* @version 1.0 2014/5/24
*/
public class ImageViewer {
public static void main(String [] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
JFrame frame = new ImageViewerFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
/**
* a frame with a label to show an image
*/
class ImageViewerFrame extends JFrame
{
public ImageViewerFrame()
{
setTitle("ImageViewer");
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
// use a label to display the images;
label = new JLabel();
add(label);
//set up the file chooser
chooser = new JFileChooser();
chooser.setCurrentDirectory(new File("."));
// set up the menu bar
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
JMenu menu = new JMenu("File");
menuBar.add(menu);
JMenuItem openItem = new JMenuItem("Open");
menu.add(openItem);
openItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
// show file chooser dialog
int result = chooser.showOpenDialog(null);
// if file selected, set it as icon of the label
if(result == JFileChooser.APPROVE_OPTION)
{
String name = chooser.getSelectedFile().getPath();
label.setIcon(new ImageIcon(name));
}
}
});
JMenuItem exitItem = new JMenuItem("Exit");
menu.add(exitItem);
exitItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
System.exit(0);
}
});
}
private JLabel label;
private JFileChooser chooser;
private static final int DEFAULT_WIDTH = 300;
private static final int DEFAULT_HEIGHT = 400;
}
1. 我新建了一个包,v1_chapter2,用于存放源代码;
2. 这里用到了GUI编程。一共两个类,ImageViewer和ImageViewerFrame,其中后一个是作者自己写的,继承了JFrame
3. 注意这些个空间之间的关系:JFrame(一个窗口) JLabel(用来放图片的) JFileChooser(文件选择器) JmenuBar(上面的菜单栏) JMenu(一个菜单) JMenuItem(菜单中的选项)
4. 通过openItem和exitItem这两个MenuItem调用addActionListerner来实现他们的功能。参数里是一个匿名内部类,重载了他的actionPerformed函数。