为了账号安全,请及时绑定邮箱和手机立即绑定

点击jList中的某一项,却不能显示出该项对应的详细信息(JTextArea)的疑问

点击jList中的某一项,却不能显示出该项对应的详细信息(JTextArea)的疑问

Tesjunma 2017-01-05 20:16:18
public abstract class Mainform extends JFrame{  protected JPanel pnlContent = null;  protected JPanel pnlInformation = null;  protected JPanel pnlButton = null;  protected JPanel pnlTime = null;    protected JList<String> jList = null;  protected DefaultListModel<String> model = null;  protected ProductController productController = null;    protected Cart cart = null;  protected JButton btnAdd = null;   protected JTextArea txtInform = null;  protected JScrollPane scrollpnl = null;    public Mainform(){      this.setSize(new Dimension(800,600));   this.setBackground(Color.LIGHT_GRAY);   this.setLocationRelativeTo(null);   this.setTitle("Gourmet Coffee System");   this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);      pnlContent = new JPanel();    pnlTime = new TimePanel();    pnlInformation = new JPanel();   pnlInformation.setBackground(Color.GRAY);    pnlButton = new JPanel();   pnlButton.setBackground(Color.white);    txtInform = new JTextArea(500,600);         setList();   this.add(pnlTime, BorderLayout.NORTH);   this.add(pnlContent,BorderLayout.WEST);   this.add(pnlButton,BorderLayout.SOUTH);      addButton(pnlButton);         showFrame();  }    private void showFrame() {   this.setVisible(true);  }    public void setList(){      model = new DefaultListModel<String>();   productController = new ProductController("information","Product.txt");   for(Product product: productController.readObject("information", "Product.txt")){    model.addElement(product.getCode());   }   jList = new JList(model);   jList.setPreferredSize(new Dimension(200,600));   pnlContent.add(jList);   setText();  }      public void setText(){   txtInform.setLineWrap(true);   txtInform.setEditable(false);   txtInform.setBackground(Color.blue);   jList.addListSelectionListener(new ListSelectionListener(){    @Override    public void valueChanged(ListSelectionEvent e) {     if(!jList.getValueIsAdjusting()){     /*      *监听过程中如果匹配,增加text内容       */     String code = jList.getSelectedValue();     ProductController productcontroller = new ProductController("information", "Product.txt");     ArrayList<Product> products =        productcontroller.readObject("information", "Product.txt");      for(Product product:products){       if(code == product.getCode()){        txtInform.setText(product.toString());          }      }     }    }   });   pnlInformation.add(txtInform);   this.add(pnlInformation,BorderLayout.CENTER);  }        abstract void addButton(JPanel pnlButton);参数:jList列出目录jTextArea我希望JList在鼠标点击的时候能显示商品的详细信息,详细信息用JTextArea等表示。为此设置了一个事件ListSelectionListener在内部类里面读取商品文件的信息(读取文件的函数返回ArrayList)查看是否有匹配(通过比较商品的属性---Code是否一致的方式)我认为我的逻辑上应该是没有问题的。在  txtInform.setText(product.toString());这句设了断点以后似乎发现有线程的冲突,还有空指针异常……?菜鸟一个,不懂怎么解决此类问题…跪求大佬帮忙。这是设了断点以后发现的问题:刚刚step into 一步以后就显示了这个…感谢!!!!
查看完整描述

目前暂无任何回答

  • 0 回答
  • 1 关注
  • 1542 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信