Skip to content

1.将JPanel保存为png

java
    /**导出曲线图*/
private void SaveCurve() {
    try {
        //文件选择器
        JFileChooser fileChooser = new JFileChooser();
        //移除全部文件
        fileChooser.removeChoosableFileFilter(fileChooser.getAcceptAllFileFilter());
        //后缀名过滤器,只显示.plc和.png
        FileNameExtensionFilter filterPng = new FileNameExtensionFilter("*.png", "png");
        fileChooser.setFileFilter(filterPng);
        FileNameExtensionFilter filterPlc = new FileNameExtensionFilter("*.plc", "plc");
        fileChooser.setFileFilter(filterPlc);
        //保存按钮
        int save = fileChooser.showSaveDialog(null);
        //用户点击保存,进行保存操作
        if (save == JFileChooser.APPROVE_OPTION) {
            File file = fileChooser.getSelectedFile();
            //判断保存的格式是.plc还是.png
            FileFilter fileFilter = fileChooser.getFileFilter();
            if ("*.plc".equals(fileFilter.getDescription())) {

            } else if ("*.png".equals(fileFilter.getDescription())) {
                //获取画布数据
                Dimension imagesize = this.drawPanel.getSize();
                BufferedImage bufferedImage = new BufferedImage(imagesize.width, imagesize.height, BufferedImage.TYPE_INT_RGB);
                Graphics2D g2 = bufferedImage.createGraphics();
                this.drawPanel.paint(g2);
                g2.dispose();
                File filePng = new File(file.getPath() + ".png");
                //文件不存在创建文件
                if (!filePng.exists()) {
                    filePng.createNewFile();
                    //保存文件
                    ImageIO.write(bufferedImage, "png", filePng);
                    JOptionPane.showMessageDialog(null, "保存成功!");
                } else {
                    //确认是否覆盖
                    int opt = JOptionPane.showConfirmDialog(null, "文件已存在,是否覆盖?", "确认", JOptionPane.YES_NO_OPTION);
                    if (opt == JOptionPane.YES_OPTION) {
                        //保存文件
                        ImageIO.write(bufferedImage, "png", filePng);
                        JOptionPane.showMessageDialog(null, "保存成功!");
                    }
                }

            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

Released under the Apache-2.0 license.