0

所以我试图在我的程序中添加一个图标,但我正在阅读的教科书解释了如何仅为 Windows 用户添加图标。我想知道如何添加图标。我在我的程序源文件夹中有它,到目前为止我的代码是这样的:

logo = new ImageIcon("~://resources//CherryBoom.png");

labelone = new JLabel("Fruit No.1 : ", logo, SwingConstants.LEFT);
JPanel panelone = new JPanel();
panelone.add(labelone, logo);

该图标仍然不会显示在 Windows 面板上,所以我真的迷路了,我不知道如何让它显示在我的程序中。

4

2 回答 2

2

首先,检查明显的解决方案,例如:

  • 你搞好了没window.add(panelone);
  • 文件在正确的位置/url 是否正确

其次,如果你像我一样讨厌 LayoutManagers,但仍想使用javax.swing,你可以尝试在面板类中使用drawString和方法。详细地:drawImagepaintComponent(Graphics g)

您需要制作自己的 JPanel:

public class MyPanel extends JPanel {

以及覆盖方法:

@Override
public void paintComponent(Graphics g) {

在方法中,调用它,这样窗口就可以刷新自己并做其他的家务事:

super.paintComponent(g);

然后,使用 drawString 和 drawImage 在您想要的位置绘制这些图像:

g.drawString("Fruit No. 1", x, y);
logo.paintIcon(this, g, x, y);

每当您更改或绘制图像时,您还需要调用 main 方法:

panelone.repaint();

希望这可以帮助!

于 2013-08-06T04:17:15.527 回答
2

Java 不支持扩展“~”路径指令。

尝试这个...

try {
  File file = new File("~");
  System.out.println(file.getAbsolutePath());
  System.out.println(file.getCanonicalPath());
} catch (IOException exp) {
  exp.printStackTrace();
}

我想你会发现它并不指向用户主文件夹。

相反,您应该使用System.getProperty("user.home")

logo = new ImageIcon(System.getProperty("user.home") + File.separator + "/resources/CherryBoom.png");

现在,话虽如此,我强烈建议您使用ImageIOover ImageIcon,因为当出现问题时您会得到更好的反馈。

查看读取/加载图像

于 2013-08-06T06:35:18.537 回答