gpt4 book ai didi

Java Swing 图像未显示?

转载 作者:太空宇宙 更新时间:2023-11-04 07:48:20 24 4
gpt4 key购买 nike

我用 Java 编写了一个小程序,作为我的编程类(class)的一部分,它获取一个人的生日并查找他们出生的星期几。根据分配规范,我们也将此小程序放在我们的 Amazon EC2 虚拟服务器上。

现在,当从 JTable 中选择人员时,程序会获取他们的信息以及图像文件的路径,该图像文件也位于 JTable 中其信息旁边。因此,例如,您可以选择以下内容:

| John Doe | 17 | 02 | 2013 | /images/John.jpg |

当我在本地计算机上运行此程序时,一切都按预期运行 - 计算日期并显示图像。但是,当我将其放在我的服务器上时,会发生以下两种情况之一:

  1. 如果我将“显示日期”代码放在“显示图像”代码之前,那么当我按下“计算”按钮时,仅显示文本,而不会显示图像。
  2. 如果我将“显示图像”代码放在“显示日期”代码之前,则当我按“计算”按钮时不会发生任何情况。

这里可能发生什么?我的图像仍然在“images/Name.jpg”路径中,我什至尝试使用整个路径(“https://myUsername.course.ca/assignment/images/Name.jpg”)。都不起作用!这种奇怪的行为有什么明显的原因吗?

/**
* Method that handles the user pressing the "Calculate" button
*/
private class btnCalculateHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
int result;

name = (String)table.getValueAt(table.getSelectedRow(), 0);

day = Integer.parseInt((String)table.getValueAt(table.getSelectedRow(), 1));
month = Integer.parseInt((String)table.getValueAt(table.getSelectedRow(), 2));
year = Integer.parseInt((String)table.getValueAt(table.getSelectedRow(), 3));

result = calculateDayOfWeek(day, month, year);

writeToFile();

ImageIcon imgPerson = new javax.swing.ImageIcon((String)table.getValueAt(table.getSelectedRow(), 4));
Image person = imgPerson.getImage();
Image personResized = person.getScaledInstance(75, 100, java.awt.Image.SCALE_SMOOTH);
ImageIcon imgPersonResized = new ImageIcon(personResized);
image.setIcon(imgPersonResized);

outputValue.setText(name + " was born on a " + days[result] + ".");
}
}

最佳答案

我看到的第一个问题是......

ImageIcon imgPerson = new javax.swing.ImageIcon((String)table.getValueAt(table.getSelectedRow(), 4))

ImageIcon(String)用于指定图像的文件名。这应该用于加载本地磁盘的图像,而不是网络路径。

如果图像是相对于小程序加载的,则可以使用 Applet#getImage(URL, String)向其传递 Applet#getDocumentBase() 的引用

类似于 getImage(getDocumentBase(), (String)table.getValueAt(table.getSelectedRow(), 4))

更好的选择是使用 ImageIO 。主要原因是它不会使用后台线程来加载图像,并且会抛出 IOException如果出现问题,可以更轻松地诊断任何问题...

类似...

BufferedImage image = ImageIO.read(new URL(getDocumentBase(), (String)table.getValueAt(table.getSelectedRow(), 4)));

关于Java Swing 图像未显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14928317/

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