我有一个数据库WAMP
,其中,尽管有其他字段,我可以插入名称,后跟图像的扩展名,例如"imagen1.jpg"
。
我正在做的程序用Java
和SQL
写成句子,我正在使用Netbeans的IDE来完成它。
我有一个名为"Imagenes.java"
的类型,我在其中选择图片的路径,以这种方式将其插入我的Jpanel
或Jlabel
。
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,但它没有正确选择它。但是,如果我这样做
打印路线的字符串,这是正确的。
我做错了什么?
答案 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...
}