2013-08-06 73 views
0

所以我试图给我的程序添加一个图标,但我正在阅读的教科书解释了如何仅适用于Windows用户。我想知道如何添加图标。我有它在我的节目源文件夹和我到目前为止的代码是这样的:如何将图标添加到Mac OS X中的Java(NetBeans)?

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

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

图标仍然不会显示在窗口面板上,所以我真的在这里丢了,我不我不知道如何才能让它显示在我的程序中。

+0

我不知道,Java是能够处理“〜”指令 – MadProgrammer

+0

你都帮了我的感谢。 – Mandygir

回答

2

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

  • 你做完window.add(panelone);
  • 是在正确的位置的文件/ URL是正确的

其次,如果你恨布局管理员喜欢我,但仍想使用javax.swing,您可以尝试在面板的paintComponent(Graphics g)类中使用drawStringdrawImage方法。详细介绍:

你需要使自己的JPanel:

public class MyPanel extends JPanel {

以及覆盖的方法:

@Override 
public void paintComponent(Graphics g) { 

的方法中,把这种让窗口也可以刷新本身和做其他家务:

super.paintComponent(g);

然后,用束带和drawImage方法绘制的地方这些图片,你想他们:

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

无论何时更改或绘制图像,你还需要在main方法调用:

panelone.repaint();

希望这会有所帮助!

+0

嗯,我从来没有使用过drawString或drawImage。所以我真的不知道它是如何工作的,我刚刚检查过它,而我几乎没有开始学习使用GUI,摆动和那些属性。即使我的编程词汇很差,但我正在尽我所能去学习这一点。我尝试了“window.add(panelone);但它没有奏效,你想让我从这个类发布我的代码,这样你就可以看到我想要做的事情,也许它会对我们有更多帮助 – Mandygir

+0

谁知道,也许图像就在那里,但可能我只需要设置JLabel或JPanel的尺寸。 – Mandygir

+0

如果你需要帮助,你肯定可以发布更多的代码,我很乐意提供帮助。 – snickers10m

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为出问题的时候,你将得到更好的反馈。

退房Reading/Loading an Image

+0

我正在努力,我试图在一个单独的类中构建ImageIO构造函数,并且我将尝试使用它。我希望它能起作用。顺便说一句,谢谢:D。 – Mandygir

相关问题