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/150
提交
取消