大神们过来看,简单问题,帮小弟随手解决下! java 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没看太懂你代码,不过你38到42那几行,new ImageIcon()明细引用的是red-ball.gif这种的图片,所以你这个三个图片的路径是不是没写对,所以没有引用到。 没有找到不是应该nullPointerException吗? 不是的,空指针是你调用没有实例化的对象或对象为空时的方法或属性,如 user.getName();如果user为空,就会报空指针;你这个获取不到资源,就不会显示这个图标啊。验证上面猜测很简单,你把red-ball.gif绝对路径写上,如c://images/red-ball.gif 这样试一下,如果可以显示,就说明确实是路径不正确。然后再优化程序,方便程序移植不要使用绝对路径。 不是的,空指针是你调用没有实例化的对象或对象为空时的方法或属性,如 user.getName();如果user为空,就会报空指针;你这个获取不到资源,就不会显示这个图标啊。验证上面猜测很简单,你把red-ball.gif绝对路径写上,如c://images/red-ball.gif 这样试一下,如果可以显示,就说明确实是路径不正确。然后再优化程序,方便程序移植不要使用绝对路径。package chapter08;import java.awt.Color;import java.awt.EventQueue;import java.awt.event.ActionEvent;import javax.swing.AbstractAction;import javax.swing.Action;import javax.swing.ActionMap;import javax.swing.Icon;import javax.swing.ImageIcon;import javax.swing.InputMap;import javax.swing.JButton;import javax.swing.JComponent;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.KeyStroke;public class ActionFrameAncestor { public static void main(String[] args){ EventQueue.invokeLater(new Runnable(){ public void run(){ ActionFrame actionFrame=new ActionFrame(); actionFrame.setTitle("输入-动作映射"); actionFrame.setVisible(true); actionFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }); }}class ActionFrame extends JFrame{ private JPanel buttonPanel; private static final int DEFAULT_WIDTH=400; private static final int DEFAULT_HEIGHT=300; public ActionFrame(){ setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT); buttonPanel=new JPanel(); Action redAction=new ColorAction("Red",Color.RED); Action blueAction=new ColorAction("Blue",Color.BLUE); Action yellowAction=new ColorAction("Yellow",Color.YELLOW); //将监听器和事件源联系在一起 buttonPanel.add(new JButton(redAction)); buttonPanel.add(new JButton(blueAction)); buttonPanel.add(new JButton(yellowAction)); add(buttonPanel); //下面将通过输入映射和动作映射将图标和键盘联系起来 InputMap imap=buttonPanel.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); imap.put(KeyStroke.getKeyStroke("ctrl Y"),"panel.yellow"); imap.put(KeyStroke.getKeyStroke("ctrl B"), "panel.blue"); imap.put(KeyStroke.getKeyStroke("ctrl R"), "panel.red"); ActionMap amap=buttonPanel.getActionMap(); amap.put("panel.yellow", yellowAction); amap.put("panel.blue", blueAction); amap.put("panel.red", redAction); } private class ColorAction extends AbstractAction{ public ColorAction(String name,Color c){ putValue(Action.NAME,name); putValue(Action.SHORT_DESCRIPTION,"set panel color to"+name.toLowerCase()); putValue("Color",c); } public void actionPerformed(ActionEvent event){ buttonPanel.setBackground((Color)getValue("Color")); } }}首先非常感谢你的关注,你的基础很扎实,概念很清晰,其次这是一段corejava中的小程序,非常简单,希望你能看懂,我把程序中关于ImageIcon的部分删掉,显示正常,三个点没有了,是正常的Red,Blue,Yellow这种表现,加上以后就是三个点了,说明图片在这里发挥作用了,这应该是java或者eclipse自带的三个图片吧?可以这样理解吗? 回楼上,不是图片发挥了作用,是Icon,你看一开始程序,第60行,putValue(Action.SMALL_ICON,icon); 往里放了一个icon,所以你可以看一下这个javax.swing.Icon 不懂,这里只是用了Icon引用,在构造方法中putValue(Action.SMALL_ICON,icon)中作形参,是指将动作按钮中小图标设置成icon。在上面的具体构造中我给出了不同的icon, Java中数组的含义?请高手指点一二. 关于JTextPane 中的图片 推送技术 如何对一个文件中的内容逐字扫描? java调用ocx异常问题 求一个b/s结构的socket,非常感激 小女子刚刚装上jb6 但编辑器好像有点问题,插入点不能正确定位,请教各位大哥。:) io问题,请教大家 【讨论】关于大量零碎文件的处理 如何判断一个对象是否在一定时间内一直在一个队列中而没有被取走过? 如何合并多个excel 求大神指教一道关于内部类的题
你这个获取不到资源,就不会显示这个图标啊。验证上面猜测很简单,你把red-ball.gif绝对路径写上,如c://images/red-ball.gif 这样试一下,如果可以显示,就说明确实是路径不正确。然后再优化程序,方便程序移植不要使用绝对路径。
你这个获取不到资源,就不会显示这个图标啊。验证上面猜测很简单,你把red-ball.gif绝对路径写上,如c://images/red-ball.gif 这样试一下,如果可以显示,就说明确实是路径不正确。然后再优化程序,方便程序移植不要使用绝对路径。package chapter08;import java.awt.Color;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.ActionMap;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.InputMap;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.KeyStroke;public class ActionFrameAncestor {
public static void main(String[] args){
EventQueue.invokeLater(new Runnable(){
public void run(){
ActionFrame actionFrame=new ActionFrame();
actionFrame.setTitle("输入-动作映射");
actionFrame.setVisible(true);
actionFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
});
}
}
class ActionFrame extends JFrame{
private JPanel buttonPanel;
private static final int DEFAULT_WIDTH=400;
private static final int DEFAULT_HEIGHT=300;
public ActionFrame(){
setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
buttonPanel=new JPanel();
Action redAction=new ColorAction("Red",Color.RED);
Action blueAction=new ColorAction("Blue",Color.BLUE);
Action yellowAction=new ColorAction("Yellow",Color.YELLOW);
//将监听器和事件源联系在一起
buttonPanel.add(new JButton(redAction));
buttonPanel.add(new JButton(blueAction));
buttonPanel.add(new JButton(yellowAction));
add(buttonPanel);
//下面将通过输入映射和动作映射将图标和键盘联系起来
InputMap imap=buttonPanel.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
imap.put(KeyStroke.getKeyStroke("ctrl Y"),"panel.yellow");
imap.put(KeyStroke.getKeyStroke("ctrl B"), "panel.blue");
imap.put(KeyStroke.getKeyStroke("ctrl R"), "panel.red");
ActionMap amap=buttonPanel.getActionMap();
amap.put("panel.yellow", yellowAction);
amap.put("panel.blue", blueAction);
amap.put("panel.red", redAction);
}
private class ColorAction extends AbstractAction{
public ColorAction(String name,Color c){
putValue(Action.NAME,name);
putValue(Action.SHORT_DESCRIPTION,"set panel color to"+name.toLowerCase());
putValue("Color",c);
}
public void actionPerformed(ActionEvent event){
buttonPanel.setBackground((Color)getValue("Color"));
}
}
}首先非常感谢你的关注,你的基础很扎实,概念很清晰,其次这是一段corejava中的小程序,非常简单,希望你能看懂,
我把程序中关于ImageIcon的部分删掉,显示正常,三个点没有了,是正常的Red,Blue,Yellow这种表现,加上以后就是三个点了,说明图片在这里发挥作用了,这应该是java或者eclipse自带的三个图片吧?可以这样理解吗?