开发者社区> 问答> 正文

JList与JPanel与滚动条的问题 400 请求报错 

为什么会报错Exception in thread "main" java.lang.NullPointerException;以前也传过JPanel给另一个函数,remove后重新添加组件,没有出错,为什么这次出错了?
代码如下

public class Menu extends Thread{

private static JPanel menu;
private JScrollPane scroll;
private JList jList1 = null;

public Menu(JPanel menu){
this.menu = menu;
}

private JList getJList1(){
if (jList1 == null) {
jList1 = new JList();
DefaultListModel listModel = new DefaultListModel();
listModel.addElement("22222");
listModel.addElement("33333333");
listModel.addElement("8888888888888888888888888888");
listModel.addElement("8888888888");
listModel.addElement("88888888");
listModel.addElement("999999999");
jList1.setModel(listModel);
}
return jList1;
}

private JScrollPane getJScroll(){
if (scroll == null) {
scroll = new JScrollPane();
scroll.setBounds(new Rectangle(142, 96, 128, 68));
scroll.setViewportView(getJList1());
}
return scroll;
}

private JPanel getmenu(){
if (menu == null){
menu.setLayout(null);
menu.add(getJScroll());
}
return menu;
}

@Override
public void run(){
this.getmenu();
}

public static void main(String[] args) {
}
}

展开
收起
kun坤 2020-05-29 17:25:17 518 0
1 条回答
写回答
取消 提交回答
  • 这逻辑写的:

    private JPanel getmenu(){ if (menu == null){ menu.setLayout(null); menu.add(getJScroll()); } return menu; }
    menu都已经等于null了, 还去通过menu调用方法,这。。。 你是想表达:
    private JPanel getmenu(){ if (menu != null){ menu.setLayout(null); menu.add(getJScroll()); } return menu; }

    吧。。######哈,抱歉,其实这个是因为传入的menu未new;;现在问题是,该怎麽设置JPanel的大小不一;因为我发觉,改变一个JPanel的大小后,其余的跟着改变;想要对panel实现frame.pack()的功能。如果你知道的话,能不能顺道告诉我呢

    2020-05-29 17:25:25
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载