1

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

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 特定的路由类型,但它没有正确选择它。但是如果我打印路线的字符串,这是正确的。我做错了什么?

4

2 回答 2

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"

于 2013-11-22T11:49:16.120 回答
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...
    }
于 2013-11-23T11:29:05.307 回答