我想上传我的项目,一个纸牌游戏到Github,它有一张我硬盘上的图片作为游戏纸牌表。有没有一种方法可以编译/运行并上传它,而无需将整个文件路径硬编码到其中?截至目前,其:
public static void main(String[] args){
JFrame frame = new JFrame();
JLabel panel = new JLabel(new ImageIcon("C:\\Users\\MyName\\Documents\\javaprojects\\Cardgame\\cardgameProject\\cardgameTableCanvas.jpg"));
frame.setSize(WIDTH,HEIGHT);
panel.setSize(WIDTH,HEIGHT);
frame.add(panel);
frame.setTitle("Test Canvas");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
CardgameTable sampleTable = new CardgameTable();
frame.add(sampleTable);
frame.setVisible(true);
}
如果这是由其他人从 Git 中提取的,我也不希望出现问题,并且我认为文件路径可以做到这一点。
最佳答案
这实际上取决于您的 java 代码所在的位置!有几种工具可以让您创建本地文件路径的 URL 对象,并且可以将这些工具输入到 ImageIcon 创建中!
如果图像与 java 代码位于同一目录(文件夹)中,则应执行以下操作以确保即使在其他计算机上也能引用该文件:
URL cardgameCanvas = new File("cardgameTableCanvas.jpg").toURI().toURL();
JLabel panel = new JLabel(new ImageIcon(cardgameCanvas));
( For java 7+ : Paths.get("cardgameTableCanvas.jpg").toUri().toURL()
)
这应该允许您通过首先创建链接到图像的 URL 对象来引用该图像,并且 passing that URL object到新的 ImageIcon 对象!
希望这有帮助!
编辑
你也可以这样做
JLabel panel = new JLabel(new ImageIcon("cardgameTableCanvas.jpg"));
;)
编辑2
你的 main 看起来像这样(如果你想走“艰难的路”):
public static void main(String[] args){
JFrame frame = new JFrame();
URL cardgameCanvas = new File("cardgameTableCanvas.jpg").toURI().toURL();
JLabel panel = new JLabel(new ImageIcon(cardgameCanvas));
frame.setSize(WIDTH,HEIGHT);
panel.setSize(WIDTH,HEIGHT);
frame.add(panel);
frame.setTitle("Test Canvas");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
CardgameTable sampleTable = new CardgameTable();
frame.add(sampleTable);
frame.setVisible(true);
}
但是由于它适合您,我绝对建议像这样引用本地文档本身:
public static void main(String[] args){
JFrame frame = new JFrame();
JLabel panel = new JLabel(new ImageIcon("cardgameTableCanvas.jpg"));
frame.setSize(WIDTH,HEIGHT);
panel.setSize(WIDTH,HEIGHT);
frame.add(panel);
frame.setTitle("Test Canvas");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
CardgameTable sampleTable = new CardgameTable();
frame.add(sampleTable);
frame.setVisible(true);
}
关于java - 当为 JComponent 使用本地文件时,有没有办法不对文件路径进行硬编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44814594/