在资源文件夹Java中插入图像

时间:2013-11-22 11:38:49

标签: java image netbeans filechooser

我有一个数据库WAMP,其中,尽管有其他字段,我可以插入名称,后跟图像的扩展名,例如"imagen1.jpg"。 我正在做的程序用JavaSQL写成句子,我正在使用Netbeans的IDE来完成它。 我有一个名为"Imagenes.java"的类型,我在其中选择图片的路径,以这种方式将其插入我的JpanelJlabel

public class Imagenes extends javax.swing.JPanel {
    String path;
    ImageIcon imag;

    public Imagenes(int width,int height,String path)
    {    
        this.path=path;
        this.setSize(width,height);        
    }

    @Override
    public void paint(Graphics graph)
    {
        Dimension tam = getSize();
        if (imag!=null)
        graph.drawImage(imag.getImage(),0,0,tam.width, tam.height, null); 
        else
        {
            ImageIcon imagenFondo = new ImageIcon(getClass().getResource(path));        
            graph.drawImage(imagenFondo.getImage(),0,0,tam.width, tam.height, null);        
        }
        setOpaque(false);
        super.paintComponent(graph);
    }

}

我插入的所有图片都已保存在名为"resources"的文件夹中。 因此,我想在"resources"文件夹中添加我从"fileChooser"中选择的计算机中的图像。 我已经尝试了千种方式,完成了整个路径,并且无法识别文件夹。但是,它 复制源文件夹中的图像。 我尝试过类似'\\resources\\imagen1.jpg'的路由类型,特定于Java,但它没有正确选择它。但是,如果我这样做 打印路线的字符串,这是正确的。 我做错了什么?

2 个答案:

答案 0 :(得分:0)

如果您使用ImageIcon(path)而不是ImageIcon(getClass().getResource(path))。您可以尝试"src/resources/imagen1.jpg"。 Netbeans将从ProjectRoot中搜索。所以只需输入"resources/imagen1.jpg",就找不到了。您需要添加src

ProjectRootDir
            src
               resources
                      imagen1.jpg

使用ImageIcon(getClass().getResource(path));时,程序会尝试从classes目录中的build目录中找到图像。如果您将资源目录放在classes目录中,则ImageIcon(getClass().getResource(path))应该正常工作

ProjectRootDir
            build
                classes
                     resources
                             imagen1.jpg

在上述方案中,您的path将为"resources/imagen.jpg"

答案 1 :(得分:0)

我怎么能用它来保存资源文件夹?

    // declare JFileChooser
JFileChooser fileChooser = new JFileChooser();

// let the user choose the destination file
if (fileChooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) {
    // indicates whether the user still wants to export the settings
    boolean doExport = true;

    // indicates whether to override an already existing file
    boolean overrideExistingFile = false;

    // get destination file
    File destinationFile = new File(fileChooser.getSelectedFile().getAbsolutePath());

    // check if file already exists
    while (doExport && destinationFile.exists() && !overrideExistingFile) {
        // let the user decide whether to override the existing file
        overrideExistingFile = (JOptionPane.showConfirmDialog(this, "Replace file?", "Export Settings", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION);

        // let the user choose another file if the existing file shall not be overridden
        if (!overrideExistingFile) {
            if (fileChooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) {
                // get new destination file
                destinationFile = new File(fileChooser.getSelectedFile().getAbsolutePath());
            } else {
                // seems like the user does not want to export the settings any longer
                doExport = false;
            }
        }
    }

    // perform the actual export
    if (doExport) {
        // the code to write the file goes here...
    }