当前位置:编程学习 > JAVA >>

菜鸟一枚。渲染树的时候出现奇怪错误~急求~!!

也不知道是什么意思,没有一个报错的类是自己写的,一渲染就出错,纠结了我三天了!!!


Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.plaf.basic.BasicTreeUI.paintDropLine(BasicTreeUI.java:1233)
at javax.swing.plaf.basic.BasicTreeUI.paint(BasicTreeUI.java:1222)
at javax.swing.plaf.ComponentUI.update(ComponentUI.java:143)
at javax.swing.JComponent.paintComponent(JComponent.java:763)
at javax.swing.JComponent.paint(JComponent.java:1027)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5122)
at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1472)
at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1403)
at javax.swing.RepaintManager.paint(RepaintManager.java:1217)
at javax.swing.JComponent._paintImmediately(JComponent.java:5070)
at javax.swing.JComponent.paintImmediately(JComponent.java:4880)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:803)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:714)
at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:694)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:128)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
--------------------编程问答-------------------- 再贴一个程序中实现树渲染的代码
friendsTree.setCellRenderer(new MyRenderer());  

class MyRenderer extends DefaultTreeCellRenderer  
{  
 
    public Component getTreeCellRendererComponent(JTree tree, Object value,  
        boolean sel, boolean expanded,  boolean leaf, int row, boolean hasFocus)  
    {  
        //执行父类默认的节点绘制操作  
        super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);  
 
        DefaultMutableTreeNode node = (DefaultMutableTreeNode)value;  
 Image head = ImageTools.getQQHead("5").getImage();
 Image headTemp = head.getScaledInstance(25, 25, Image.SCALE_DEFAULT);
 ImageIcon icon0 = new ImageIcon(headTemp);
        //改变图标  
        this.setIcon(icon0);  
        return this;  
    }  
}  --------------------编程问答-------------------- 这个是我下午网上搜到的,刚刚自己在做模拟qq的时候用了,可以用。
import java.awt.*;

import javax.swing.Icon;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;

public class IconNodeRenderer extends DefaultTreeCellRenderer{
    public Component getTreeCellRendererComponent(JTree tree,Object
     value,boolean sel,boolean expanded,boolean leaf, int row, boolean hasFocus){
        super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
        Icon icon=((IconNode)value).getIcon();
        String txt=((IconNode)value).getText();
        setIcon(icon);
        setText(txt);
        return this;
    }
/**
 * @param args
 */

}
class IconNode extends DefaultMutableTreeNode{
protected Icon icon;
protected String txt;
public IconNode(Icon icon,String txt){
super();
this.icon=icon;
this.txt=txt;
}
public void setIcon(Icon icon)
{
this.icon=icon;
}
public Icon getIcon()
{
return icon;
}
public  void setText(String txt)
{
this.txt=txt;

}
public String getText()
{
return txt;
}
} --------------------编程问答-------------------- 你自己参照着改一下,看看问题出在哪里,这个我也不是很懂,也在边学变网上搜,只能帮你到这里了。。。。 --------------------编程问答--------------------
引用 3 楼 D_reamW_eaver 的回复:
你自己参照着改一下,看看问题出在哪里,这个我也不是很懂,也在边学变网上搜,只能帮你到这里了。。。。
   啥意思???照着什么改? --------------------编程问答--------------------
引用 3 楼 D_reamW_eaver 的回复:
你自己参照着改一下,看看问题出在哪里,这个我也不是很懂,也在边学变网上搜,只能帮你到这里了。。。。
 看到了,我试试,谢啦哈~ --------------------编程问答--------------------
引用 3 楼 D_reamW_eaver 的回复:
你自己参照着改一下,看看问题出在哪里,这个我也不是很懂,也在边学变网上搜,只能帮你到这里了。。。。
 我们做的东西一样啊~~~我好像突然发现为什么了,对了,再问一个问题,为什么我的qq面板会变成酱紫?    滚动条那儿变的好长,有的会那么长,有的就很正常 --------------------编程问答-------------------- 酱紫不是你的皮肤吗?“滚动条那儿变的好长,有的会那么长,有的就很正常”什么意思?有截图吗?
图片是你的效果图吗,好逼真呀 --------------------编程问答--------------------
引用 6 楼 zt000zt000 的回复:
引用 3 楼 D_reamW_eaver 的回复:
你自己参照着改一下,看看问题出在哪里,这个我也不是很懂,也在边学变网上搜,只能帮你到这里了。。。。 我们做的东西一样啊~~~我好像突然发现为什么了,对了,再问一个问题,为什么我的qq面板会变成酱紫?    滚动条那儿变的好长,有的会那么长,有的就很正常


很明显,放在滚动条里的面板太高了。 --------------------编程问答--------------------
引用 1 楼 zt000zt000 的回复:
再贴一个程序中实现树渲染的代码
friendsTree.setCellRenderer(new MyRenderer());  

class MyRenderer extends DefaultTreeCellRenderer  
{  
 
    public Component getTreeCellRendererComponent(JTree tree, Object va……

你把你加的几行代码去掉看会不会报错,如果照样报就没错在这里了。
错误报的没在你写的类里一般是:你给你调用的系统方法时传入了一个空值。所以错报到系统方法里去了。

debug调试一步步查看内存中传入渲染器类的参数。 --------------------编程问答--------------------
引用 6 楼 zt000zt000 的回复:
引用 3 楼 D_reamW_eaver 的回复:你自己参照着改一下,看看问题出在哪里,这个我也不是很懂,也在边学变网上搜,只能帮你到这里了。。。。 我们做的东西一样啊~~~我好像突然发现为什么了,对了,再问一个问题,为什么我的qq面板会变成酱紫?    滚动条那儿变的好长,有的会那么长,有的就很正常

这是你的界面吗?真TMD逼真 --------------------编程问答--------------------
引用 7 楼 D_reamW_eaver 的回复:
酱紫不是你的皮肤吗?“滚动条那儿变的好长,有的会那么长,有的就很正常”什么意思?有截图吗?
图片是你的效果图吗,好逼真呀
   那就是我的截图啊,再来一张,有的是正常的,像这样的 有的不正常的就是像我刚刚发的那样的了 --------------------编程问答--------------------
引用 8 楼 tai8feng 的回复:
引用 6 楼 zt000zt000 的回复:引用 3 楼 D_reamW_eaver 的回复:
你自己参照着改一下,看看问题出在哪里,这个我也不是很懂,也在边学变网上搜,只能帮你到这里了。。。。 我们做的东西一样啊~~~我好像突然发现为什么了,对了,再问一个问题,为什么我的qq面板会变成酱紫?    滚动条那儿变的好长,有的会那么长,有的就很正常

很明显,放在滚动……
  什么意思?问题是不是每个滚动条都会那么奇怪的啊,同样的程序运行,80%是正常的,还有20%会量子变形掉 --------------------编程问答--------------------
引用 9 楼 tai8feng 的回复:
引用 1 楼 zt000zt000 的回复:再贴一个程序中实现树渲染的代码
friendsTree.setCellRenderer(new MyRenderer());  

class MyRenderer extends DefaultTreeCellRenderer  
{  
 
    public Component getTreeCellRend……
   菜鸟一枚,debug用的还不是很熟练,有自己写的类的时候还好,没有自己写的类都是系统类就看着非常蛋疼。。。 --------------------编程问答-------------------- 就从你看得懂的类开打个断点,再debug模式运行。F6一步步调,鼠标放到当前调试行上悬浮就能看变量的值。 --------------------编程问答-------------------- 滚动条一般默认不显示,只有滚动条里面的面板高度大于外面的可视区时才会显示出来。
所以你也可以调试看看里面的面板高度,看看你的布局是不是会撑开面板。 --------------------编程问答-------------------- BasicTreeUI.java:1233 这一行报空指针,去看看 --------------------编程问答-------------------- BasicTreeUI.java:1233 这一行报空指针,去看看 --------------------编程问答-------------------- 靠,坑爹的网速。。。 --------------------编程问答--------------------
引用 15 楼 tai8feng 的回复:
滚动条一般默认不显示,只有滚动条里面的面板高度大于外面的可视区时才会显示出来。
所以你也可以调试看看里面的面板高度,看看你的布局是不是会撑开面板。
    这两个都是不正常面板,左边一个明明好友没满还是出现滚动条,右边一个好友昵称没显示全,我都不知道为什么会出现这个原因,都是一样的源代码啊,有的就是会出现,有的就不会,如果把渲染的代码去了就都没错,不过界面就变的很丑 --------------------编程问答-------------------- 请问你的那些qq功能图标是在那下的,能不能给我发一份 --------------------编程问答-------------------- 偶也遇见了 还是没明白 为何  --------------------编程问答--------------------
引用 20 楼 D_reamW_eaver 的回复:
请问你的那些qq功能图标是在那下的,能不能给我发一份
可以,怎么发给你? --------------------编程问答--------------------
引用 21 楼 xudan563087651 的回复:
偶也遇见了 还是没明白 为何
 你也遇见啦?是遇见空指针的还是那个树渲染很奇怪的错误?解决了没? --------------------编程问答--------------------
引用 20 楼 D_reamW_eaver 的回复:
请问你的那些qq功能图标是在那下的,能不能给我发一份
不是下载的,都是我自己截的图
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,