在Jar语言 - Netbeans中添加要构建的文本文件和图像



在构建Jar时,我真的面临太多的问题。问题是在Netbeans它的工作很好,但如果我试图从/dest文件夹运行.jar文件,它不调用额外的文本文件和图像。我尝试了各种解决方案,但都无法真正解决它。这是我存储.java文件的目录。src/RX/example.java,其中RX是包名。我将所有的图像和文本文件插入到同一个目录中,并像这样调用。

JButton btnStart = new JButton(new ImageIcon("src/RX/start1.png")); //Set Image for Button

现在从文本文件中读取:

Reader reader = null; 
JTextArea jtaUser= new JTextArea(); 
try {
    reader = new FileReader(new File("src/RX/rxUser.txt"));
    jtaUser.read(reader, "");
} catch (Exception exp) {
} finally {
    try {
        reader.close();
    } catch (Exception exp) {
    }
}

正如我之前所说的,问题是如果我从Netbeans运行一切都很好,但文本文件和图像不包括在.jar文件中。因此,当我打开.jar时,按钮似乎是空的,并且在读取文件时它冻结了。

我需要一个我在上面所做的相同编码的答案。所以,请告诉我或告诉我如何我可以设置图像和阅读文本文件,而不是给链接到其他答案。我非常感谢你对这个问题的回答。谢谢你。

当您作为File对象读取文件时,程序将尝试从本地文件系统读取。如果你打算使用一个文件作为资源,那么你应该这样读取它们。

您可以从getClass().GetResourceAsStream()获得InputStream,然后将InputStream传递给InputStreamReader以用于read()方法。在你的例子中,你会使用

InputStream is = getClass().getResourceAsStream("/RX/rxUsers.txt");
InputStreamReader reader = new InputStreamReader(is);
textArea.read(reader, ..);

我使用的路径是由类路径决定的。由于RX dir是src的直接子目录,因此它将位于类路径的根目录中。要从调用类获得类路径的根(使用getClass()),您需要在路径前面添加额外的/

要读取图像,您可以使用返回InputStreamgetResourceAsStream(),或者使用返回URL的getResource()。您可以将URL传递给返回Image对象的ImageIcon(URL)ImageIO.read(URL)。根据你的需要选择哪一个。例子:

URL url = getClass().getResource("/RX/start1.png"); // you will need to 
ImageIcon icon = new ImageIcon(url);                // handle exception

相关内容

  • 没有找到相关文章