注释很详细,直接上代码
上一篇
新增内容
1.菜单项按键响应
2. 文件选择器对话框用法
3.绘画板用法
package swing21_30;import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;public class swing_test_29 {//创建窗口对象JFrame jFrame= new JFrame("测试JFileChooser");//创建文件对话框JFileChooser jFileChooser = new JFileChooser(".");//创建菜单条JMenuBar jMenuBar = new JMenuBar();//创建菜单JMenu jMenu = new JMenu("文件");//创建菜单项JMenuItem open = new JMenuItem(new AbstractAction("打开"){//继承AbstractAction//重写actionPerformed方法@Overridepublic void actionPerformed(ActionEvent e) {//调用showOpenDialog方法jFileChooser.showOpenDialog(jFrame);//获取用户选择的文件File imageFile = jFileChooser.getSelectedFile();try {//读取图片image = ImageIO.read(imageFile);//刷新界面drawArea.repaint();} catch (IOException e1) {//打印异常信息e1.printStackTrace();}}});//另存为菜单项JMenuItem save = new JMenuItem(new AbstractAction("另存为"){//重写actionPerformed方法@Overridepublic void actionPerformed(ActionEvent e) {//设置文件选择模式,模式为单选jFileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);//调用showSaveDialog方法jFileChooser.showSaveDialog(jFrame);//获取用户选择的文件夹File dir = jFileChooser.getSelectedFile();try {//将图片另存为jpg格式ImageIO.write(image,"jpeg",new File(dir,"a.jpg"));} catch (Exception e1) {//打印异常信息e1.printStackTrace();}}});//用来记录用户选择的图片BufferedImage image;//显示图片class MyCanvas extends JPanel{//重写paint方法@Overridepublic void paint(Graphics g) {//绘制图片if (image!=null){//绘制图片g.drawImage(image,0,0,null);}}}//用来显示图片的面板JPanel drawArea = new MyCanvas();//初始化方法public void init(){//设置图片显示区域大小drawArea.setPreferredSize(new Dimension(500,300));//将面板添加到窗口中jFrame.add(drawArea);//组装并设置菜单条jMenu.add(open);jMenu.add(save);jMenuBar.add(jMenu);jFrame.setJMenuBar(jMenuBar);//设置窗口关闭方式jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置窗口大小jFrame.pack();jFrame.setVisible(true);}public static void main(String[] args) {//启动程序new swing_test_29().init();}}
效果演示:
随意打开一张图片