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