如何创建仅包含图像的JButton

时间:2015-02-25 23:51:31

标签: java swing user-interface

我已经使用JButton制作了一些按钮,我尝试在按钮上添加图像而不会看到按钮的其余部分,因此您只能看到可点击的图像。这是我的代码:

 final JButton HomeButton = new JButton("Home");
HomeButton.setBorderPainted(false);
HomeButton.setBorder(null);
HomeButton.setMargin(new Insets(0, 0, 0, 0));
HomeButton.setContentAreaFilled(false);
HomeButton.setIcon(new ImageIcon(getClass().getResource("src/Images/0.png")));  << Line 78
HomeButton.setRolloverIcon(new ImageIcon(getClass().getResource("src/Images/0_h.png")));
HomeButton.setBounds(new Rectangle(10, 9, 50, 50));
this.contentPane.add(HomeButton);

使用它时出现此错误:

java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(Unknown Source)
at gui.Gui.<init>(Gui.java:78)
at gui.Gui$1.run(Gui.java:40)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

2 个答案:

答案 0 :(得分:2)

JButton button = new JButton();
button.setBorderPainted(false);
button.setBorder(null);
button.setMargin(new Insets(0, 0, 0, 0));
button.setContentAreaFilled(false);
button.setIcon(myIcon1);
button.setRolloverIcon(myIcon2);
button.setPressedIcon(myIcon3);
button.setDisabledIcon(myIcon4);

答案 1 :(得分:1)

删除按钮边框...

button.setBorderPainted(false);

删除内容画......

button.setContentAreaFilled(false);

您甚至可能想让按钮透明......

button.setOpaque(false);

根据您的需要,您可能还想删除焦点矩形...

button.setFocusPainted(false);

您可能还会发现需要重置按钮边距以使按钮适合内容...

button.setMargin(new Insets(0, 0, 0, 0));

有关详细信息,请参阅How to Use Buttons, Check Boxes, and Radio Buttons