所以我试图在我的程序中添加一个图标,但我正在阅读的教科书解释了如何仅为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面板上,所以我真的迷失在这里,我不知道怎样才能让它显示在我的程序中。
答案 0 :(得分:2)
首先,检查明显的解决方案,例如:
window.add(panelone);
其次,如果您讨厌像我这样的LayoutManagers,但仍想使用javax.swing
,您可以尝试在面板的drawString
课程中使用drawImage
和paintComponent(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();
希望这有帮助!
答案 1 :(得分: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");
现在,尽管如此,我强烈建议您使用ImageIO
而不是ImageIcon
,因为当出现问题时您会得到更好的反馈。