import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;public class Test extends Frame
{ private static final long serialVersionUID = 1L; static Image aquariumImage; public Test()
{
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
dispose();
System.exit(0);
}
});
} public static void main(String[] args)
{
Test test = new Test();
test.go();
test.setSize(600, 435);
test.setVisible(true); Graphics g = test.getGraphics();
while (!g.drawImage(aquariumImage, 0, 0, test));
} public void go()
{
String address = getClass().getResource("bubbles.gif").getPath().toString();
System.out.println(address);
aquariumImage = Toolkit.getDefaultToolkit().getImage(address);
}
}为了teacher assistant,说应该用URL方式调用图片,不确定这里是否是用了URL方式,如果不是又是怎样?本程序eclipse中运行正常(随便用一张gif图片) ,但等打成jar包后就无法运行了,还听说很多人都碰到类似问题了,期待高手给予帮助。
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;public class Test extends Frame
{ private static final long serialVersionUID = 1L; static Image aquariumImage; public Test()
{
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
dispose();
System.exit(0);
}
});
} public static void main(String[] args)
{
Test test = new Test();
test.go();
test.setSize(600, 435);
test.setVisible(true); Graphics g = test.getGraphics();
while (!g.drawImage(aquariumImage, 0, 0, test));
} public void go()
{
String address = getClass().getResource("bubbles.gif").getPath().toString();
System.out.println(address);
aquariumImage = Toolkit.getDefaultToolkit().getImage(address);
}
}为了teacher assistant,说应该用URL方式调用图片,不确定这里是否是用了URL方式,如果不是又是怎样?本程序eclipse中运行正常(随便用一张gif图片) ,但等打成jar包后就无法运行了,还听说很多人都碰到类似问题了,期待高手给予帮助。
打印出来的是什么
aquariumImage = Toolkit.getDefaultToolkit().getImage(address);
看看这行完了后aquariumImage是不是null
用URL改成这样
URL address = getClass().getResource("/bubbles.gif);
aquariumImage = new ImageIcon(address).getImage();
注意
bubbles.gif放到class根目录下
aquariumImage = Toolkit.getDefaultToolkit().getImage(address);感谢fool_leave(请及时结贴)给予的帮助。稍后结帖。
import java.awt.event.*;
import java.net.URL;
import java.net.URLClassLoader;import javax.swing.AbstractButton;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.ImageIcon;
public class ButtonDemo extends JPanel
implements ActionListener {
protected JButton b1, b2, b3; public ButtonDemo() {
ImageIcon leftButtonIcon = new ImageIcon(createImage("images/right.gif"));
ImageIcon middleButtonIcon = new ImageIcon(createImage("images/middle.gif"));
ImageIcon rightButtonIcon = new ImageIcon(createImage("images/left.gif")); b1 = new JButton("失效中间按钮(D)", leftButtonIcon);
b1.setVerticalTextPosition(AbstractButton.CENTER);//水平中间对齐
b1.setHorizontalTextPosition(AbstractButton.LEADING);//相当于LEFT
b1.setMnemonic(KeyEvent.VK_D);//将b1邦定alt+D键
b1.setActionCommand("disable"); b2 = new JButton("M中间按钮", middleButtonIcon);
b2.setVerticalTextPosition(AbstractButton.BOTTOM);
b2.setHorizontalTextPosition(AbstractButton.CENTER);
b2.setMnemonic(KeyEvent.VK_M);//将b2邦定alt+M键 b3 = new JButton("E激活中间按钮", rightButtonIcon);
b3.setMnemonic(KeyEvent.VK_E);//将b3邦定alt+E键
b3.setActionCommand("enable");
b3.setEnabled(false);
b1.addActionListener(this);
b3.addActionListener(this);
b1.setToolTipText("点击这个按钮,将使中间的按钮失效!");
b2.setToolTipText("点击这个按钮,没有任何的事件发生!");
b3.setToolTipText("点击这个按钮,将使中间的按钮有效"); add(b1);
add(b2);
add(b3);
} public void actionPerformed(ActionEvent e) {
if ("disable".equals(e.getActionCommand())) {
b2.setEnabled(false);
b1.setEnabled(false);
b3.setEnabled(true);
} else {
b2.setEnabled(true);
b1.setEnabled(true);
b3.setEnabled(false);
}
} Image createImage(String filename) { Image image = null;
URL address = getClass().getResource(filename);
image = Toolkit.getDefaultToolkit().getImage(address);
System.out.println(address);
return image;
} public static void main(String[] args) { JFrame.setDefaultLookAndFeelDecorated(false); JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ButtonDemo newContentPane = new ButtonDemo();
newContentPane.setOpaque(true);
frame.setContentPane(newContentPane); frame.pack();
frame.setVisible(true);
}
}