gpt4 book ai didi

java - 使用插件进行资源处理

转载 作者:行者123 更新时间:2023-12-01 13:31:44 24 4
gpt4 key购买 nike

我想了解您对我在支持插件的应用程序中加载资源的实现的看法。

在我的主应用程序中,我有一个资源处理程序类,我已将其公开给我的插件。当插件尝试获取其资源时,该类被创建为辅助类。

 public class ResourceHelper{
private Class<?> T;
public ResrouceHandler(Class<?> T){
this.T = T;
}
public BufferedImage getImageResource(String path){
T.getClassLoader().getResource()...
}

}

为了使用助手,调用者必须创建一个实例。

ResourceHelper resourceHelper = new ResourceHelper(getClass())

但我宁愿不再使用 getClass() 方法,而是让 ResourceHelper 自己获取当前的类加载器。我尝试过使用 Thread.currentThread().getContextClassLoader() 但它似乎不起作用。

最佳答案

不确定你做错了什么,但你的助手类对我来说工作得很好。

TestResourceHelper.java

import factory.ResourceHelper;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class TestResourceHelper {
private static class ImagePanel extends JPanel {
BufferedImage img;
ResourceHelper helper;
public ImagePanel() throws IOException {
helper = new ResourceHelper(TestResourceHelper.class);
img = helper.getImageResource("resources/stackoverflow5.png");
}
protected void paintComponent(Graphics g) {
g.drawImage(img, 0, 0, getWidth(), getHeight(), this);
}
public Dimension getPreferredSize() {
return new Dimension(250, 250);
}
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable(){
public void run(){
try {
JOptionPane.showMessageDialog(null, new ImagePanel(), "Test Image", JOptionPane.PLAIN_MESSAGE);
} catch (IOException ex) {
Logger.getLogger(TestResourceHelper.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
}
}

ResourceHelper.java

import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;

public class ResourceHelper{
private Class<?> T;
public ResourceHelper(Class<?> T){
this.T = T;
}
public BufferedImage getImageResource(String path) throws IOException{
BufferedImage image = ImageIO.read(T.getClassLoader().getResource(path));
return image;
}
}

文件结构

enter image description here

结果

enter image description here

关于java - 使用插件进行资源处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21532053/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com