⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 componentlistpanel.java~155~

📁 些程序用java实现一个装机程序,不过是一个C/S架构,但是在数据库的设计方面与3层架构的构造方案我想对一些朋友还是否有一定的帮助吧
💻 JAVA~155~
字号:
package pcdiysystem.Panel;

import java.awt.*;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.BorderLayout;
import java.util.Vector;
import pcdiysystem.Dao.ProcessorsDAO;
import pcdiysystem.Dao.MotherboardsDAO;
import pcdiysystem.Dao.ManuOfMotDAO;
import pcdiysystem.Dao.ManuOfProDAO;
import java.awt.Font;
import pcdiysystem.Panel.DIYPanel;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.table.TableColumn;
import javax.swing.table.JTableHeader;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseMotionAdapter;
import pcdiysystem.Dao.DefaultProjectDAO;

/**
 * <p>Title: 自助装机系统</p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2006</p>
 *
 * <p>Company: </p>
 *
 * @author kamiiiyu
 * @version 1.0
 */
public class ComponentListPanel
    extends JPanel {

  BorderLayout borderLayout1 = new BorderLayout();
  JScrollPane scpListOfComponent = new JScrollPane();
  JPanel pnlTitle=new JPanel(new GridLayout(1,4));
  JPanel pnlBottom=new JPanel(new FlowLayout());
  JPanel pnlBottomContainer=new JPanel(new BorderLayout());
  JTextArea txtDetail=new JTextArea(5,50);
  JButton btnSelect=new JButton("选用");
  JButton btnCancel=new JButton("取消");
  JLabel lblComponents=new JLabel("电脑配件");
  JLabel lblManufacturer=new JLabel("品牌");
  JComboBox cboComponents = new JComboBox();
  JComboBox cboManufacturer = new JComboBox();
  JTable tabComData;
  DefaultTableModel dtComponent;
  DefaultTableModel dtCellDisEditable;
  Vector selectedRecord;
  ProjectPanel pnlRight;
  float total=0.0f;//预备删除
  float [] priceOfComponent={0.0f,0.0f,0.0f,0.0f,0.0f,0.0f,0.0f,0.0f,0.0f,0.0f,0.0f,0.0f,0.0f,0.0f};

  public ComponentListPanel() {
    try {
      jbInit();
    }
    catch (Exception exception) {
      exception.printStackTrace();
    }
  }

  public ComponentListPanel(ProjectPanel pnlRight) {
    try {
      this.pnlRight=pnlRight;
      jbInit();
    }
    catch (Exception exception) {
      exception.printStackTrace();
    }
  }

  private void jbInit() throws Exception {
    this.setLayout(borderLayout1);
    lblComponents.setFont(new java.awt.Font("宋体", Font.BOLD, 15));
    lblComponents.setText("电 脑 配 件:");
    lblManufacturer.setFont(new java.awt.Font("宋体", Font.BOLD, 15));
    lblManufacturer.setText("  品  牌:");
    this.insertToCboComponents();
    this.inserToCboManufacturer();
    cboComponents.addItemListener(new
                                  ComponentListPanel_cboComponents_itemAdapter(this));
    cboManufacturer.addItemListener(new
                                    ComponentListPanel_cboManufacturer_itemAdapter(this));
    btnSelect.addActionListener(new ComponentListPanel_btnSelect_actionAdapter(this));
    btnCancel.addActionListener(new ComponentListPanel_btnCancel_actionAdapter(this));
    pnlTitle.add(lblComponents);
    pnlTitle.add(cboComponents);
    pnlTitle.add(lblManufacturer);
    pnlTitle.add(cboManufacturer);
    pnlBottom.add(btnSelect);
    pnlBottom.add(btnCancel);
    pnlBottomContainer.add(pnlBottom,BorderLayout.CENTER);
    pnlBottomContainer.add(txtDetail,BorderLayout.NORTH);
    pnlBottomContainer.add(new JLabel("硬件细节"),BorderLayout.WEST);
    this.add(pnlBottomContainer,BorderLayout.SOUTH);

    this.creatNewComponentTable("Intel");
    this.add(scpListOfComponent, java.awt.BorderLayout.CENTER);
    this.add(pnlTitle, java.awt.BorderLayout.NORTH);
    //this.add(pnlBottom,BorderLayout.SOUTH);
 }

 private void insertToCboComponents(){
   cboComponents.addItem("CPU");
   cboComponents.addItem("散热系统");
   cboComponents.addItem("主板");
   cboComponents.addItem("内存");
   cboComponents.addItem("硬盘");
   cboComponents.addItem("显卡");
   cboComponents.addItem("声卡");
   cboComponents.addItem("光驱");
   cboComponents.addItem("显示器");
   cboComponents.addItem("鼠标");
   cboComponents.addItem("键盘");
   cboComponents.addItem("机箱");
   cboComponents.addItem("PC电源");
   cboComponents.addItem("音箱");
   //cboComponents.addItem("键鼠套装");
   cboComponents.setSelectedIndex(0);
 }

 public ComponentListPanel getCurrentObject(){
   return this;
 }

 private void inserToCboManufacturer(){
   cboManufacturer.removeAllItems();
   int index=cboComponents.getSelectedIndex();
   switch(index){
     case 0:{
       Vector temp = (new ManuOfProDAO()).getManufacturer();
       for (int i = 0; i < temp.size(); i++) {
         cboManufacturer.addItem(temp.get(i));
       }
       break;
     }
     case 1:{
       break;
     }
     case 2:{
       Vector temp = (new ManuOfMotDAO()).getManufacturer();
       for (int i = 0; i < temp.size(); i++) {
         cboManufacturer.addItem(temp.get(i));
       }
       break;
     }
   }
 }

 void creatNewComponentTable(String manufacturer){
   int index=cboComponents.getSelectedIndex();
   Vector colName=new Vector();
   Vector cellData=new Vector();
   switch(index){
     case 0:
       ProcessorsDAO pd=new ProcessorsDAO();
       cellData=pd.getBaseInfomation(manufacturer);
       colName.add("型号");colName.add("主频");colName.add("前端总线");
       colName.add("接口类型");colName.add("库存");colName.add("价格");
       break;
     case 1:{
       break;
     }
     case 2:{
       MotherboardsDAO md=new MotherboardsDAO();
       cellData=md.getBaseInfomation(manufacturer,MotherboardsDAO.COMPONENTLISTPANEL);
       colName.add("型号");colName.add("CPU插槽类型");colName.add("北桥芯片");
       colName.add("支持CPU类型");colName.add("支持显卡标准");colName.add("硬件描述");
       colName.add("库存");colName.add("价格");
     }
   }
   /*
    dtComponent=new DefaultTableModel(cellData,colName);
    tabComData=new JTable(dtComponent);
    *///构造可编辑单元格的表格
   dtCellDisEditable=new TableModelOfCellDiseditable();
   dtCellDisEditable.setDataVector(cellData,colName);
   tabComData=new JTable(dtCellDisEditable);
   tabComData.addMouseMotionListener(new
                                     ComponentListPanel_tabComData_mouseMotionAdapter(this));
   tabComData.addMouseListener(new ComponentListPanel_tabComData_mouseAdapter(this));
   for(int i=0;i<colName.size();i++){
     tabComData.getColumnModel().getColumn(i).setPreferredWidth(150);
   }
   tabComData.getColumnModel().getColumn(3).setPreferredWidth(200);
   tabComData.setAutoResizeMode(tabComData.AUTO_RESIZE_OFF);
   tabComData.setDragEnabled(false);
   tabComData.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
   tabComData.setRowSelectionInterval(0,0);
   tabComData.setDragEnabled(false);
   tabComData.getTableHeader().setReorderingAllowed(false);
   scpListOfComponent.getViewport().add(tabComData);
 }
/*已过时
 String calculate(int componentIndex,float pricePlus,int quantity){
   total=Float.valueOf(pnlRight.lblTotalValue.getText().substring(1,5));
   switch(componentIndex){
     case 0:
       total-=(priceOfComponent[0]*quantity);
       priceOfComponent[0]=pricePlus;
       total+=(priceOfComponent[0]*quantity);
       break;
     case 1:
       total-=(priceOfComponent[1]*quantity);
       priceOfComponent[1]=pricePlus;
       total+=(priceOfComponent[1]*quantity);
       break;
     case 2:
       total-=(priceOfComponent[2]*quantity);
       priceOfComponent[2]=pricePlus;
       total+=(priceOfComponent[2]*quantity);
       break;
   }
   return String.valueOf(total);
 }
 */

 public void cboComponents_itemStateChanged(ItemEvent itemEvent) {
   this.inserToCboManufacturer();
 }

 public void cboManufacturer_itemStateChanged(ItemEvent e) {
   if(cboManufacturer.getItemCount()!=0){
     this.creatNewComponentTable(String.valueOf(cboManufacturer.
                                                getSelectedItem()));
   }
 }

 public void btnSelect_actionPerformed(ActionEvent e) {
   /*
    Vector temp=new Vector();
    int rowIndex=this.tabComData.getSelectedRow();
    int lastColumnIndex=this.tabComData.getColumnCount()-1;
    temp.add(cboComponents.getSelectedItem());
    temp.add(this.tabComData.getValueAt(rowIndex,0));
    temp.add(new Integer(1));
    temp.add(this.tabComData.getValueAt(rowIndex,lastColumnIndex));
    selectedRecord.add(temp);
    pnlRight.creatNewProjectTable(selectedRecord);
    */
   //每次重新绘制右表
   selectedRecord = new Vector();
   int rowIndex = this.tabComData.getSelectedRow();
   int lastColumnIndex = this.tabComData.getColumnCount() - 1;
   selectedRecord.add(0,this.tabComData.getValueAt(rowIndex, 0));
   selectedRecord.add(1,new Integer(1));
   selectedRecord.add(2,this.tabComData.getValueAt(rowIndex,lastColumnIndex));
   for(int i=0;i<3;i++){
     pnlRight.dataOfProject.setValueAt(selectedRecord.get(i),cboComponents.getSelectedIndex(),i+1);
   }
   /*
   float pricePlus=Float.parseFloat(String.valueOf(this.tabComData.getValueAt(rowIndex,lastColumnIndex)).substring(1));
   int componentIndex=cboComponents.getSelectedIndex();
   int quantity=Integer.valueOf(String.valueOf(pnlRight.tabProjectData.getValueAt(pnlRight.focusOfRow,2)));
   System.out.println(quantity);
   //String temp=this.calculate(componentIndex,pricePlus,quantity);
   String temp=String.valueOf(pnlRight.calculate());
   pnlRight.lblTotalValue.setText("¥"+temp+"0元");
   */
  //pnlRight.calculateAndInsertData();
  new DefaultProjectDAO(pnlRight).calculate();
 }

 public void btnCancel_actionPerformed(ActionEvent e) {
   try{
     /*//已过时,数量大于1时结果与预期不符
     int lastColumnIndex = pnlRight.tabProjectData.getColumnCount() - 1;
     int componentIndex = cboComponents.getSelectedIndex();
     float priceMinus = Float.parseFloat(String.valueOf(pnlRight.tabProjectData.
         getValueAt(componentIndex, lastColumnIndex)).substring(1));
     String temp = String.valueOf(total - priceMinus);
     pnlRight.lblTotalValue.setText("¥" + temp + "0元");
     System.out.println(pnlRight.tabProjectData.getValueAt(componentIndex,
         lastColumnIndex));*/
     for (int i = 0; i < 3; i++) {
       pnlRight.dataOfProject.setValueAt(null, cboComponents.getSelectedIndex(),
                                         i + 1);
     }
     new DefaultProjectDAO(pnlRight).calculate();
   }catch(NumberFormatException ne){
     JOptionPane.showMessageDialog(this,"没有可取消的项目!","出错了!",JOptionPane.ERROR_MESSAGE);
   }
 }

 public void tabComData_mouseMoved(MouseEvent e) {
   int rowIndex=this.tabComData.getSelectedRow();
   int lastColumnIndex=this.tabComData.getColumnCount()-1;
   tabComData.setToolTipText("价格:"+this.tabComData.getValueAt(rowIndex,lastColumnIndex));
 }

 public void tabComData_mouseClicked(MouseEvent e) {
   if(e.getClickCount()==2 && e.getButton()==e.BUTTON1){
     selectedRecord = new Vector();
     int rowIndex = this.tabComData.getSelectedRow();
     int lastColumnIndex = this.tabComData.getColumnCount() - 1;
     selectedRecord.add(0,this.tabComData.getValueAt(rowIndex, 0));
     selectedRecord.add(1,new Integer(1));
     selectedRecord.add(2,this.tabComData.getValueAt(rowIndex,lastColumnIndex));
     for(int i=0;i<3;i++){
       pnlRight.dataOfProject.setValueAt(selectedRecord.get(i),cboComponents.getSelectedIndex(),i+1);
     }
     new DefaultProjectDAO(pnlRight).calculate();
   }else if(e.getClickCount()==1 && e.getButton()==e.BUTTON1){
     int row=tabComData.getSelectedRow();
     String text=String.valueOf(tabComData.getValueAt(row,5));
     String [] words=text.split("/");System.out.println(words[0]);
     txtDetail.setText("");
     for(int i=0;i<words.length;i++){
         txtDetail.append(words[i]+"\n");
     }
   }
 }
}

class ComponentListPanel_tabComData_mouseMotionAdapter
   extends MouseMotionAdapter {
 private ComponentListPanel adaptee;
 ComponentListPanel_tabComData_mouseMotionAdapter(ComponentListPanel adaptee) {
   this.adaptee = adaptee;
 }

 public void mouseMoved(MouseEvent e) {
   adaptee.tabComData_mouseMoved(e);
 }
}

class ComponentListPanel_tabComData_mouseAdapter
    extends MouseAdapter {
  private ComponentListPanel adaptee;
  ComponentListPanel_tabComData_mouseAdapter(ComponentListPanel adaptee) {
    this.adaptee = adaptee;
  }

  public void mouseClicked(MouseEvent e) {
    adaptee.tabComData_mouseClicked(e);
  }
}

class TableModelOfCellDiseditable
   extends DefaultTableModel{
  public TableModelOfCellDiseditable() {
  }

  public boolean isCellEditable(int rowIndex, int columnIndex) {
    /*
         if (columnIndex == 0) { // 序列号不能修改
      return false;
         }
         if(rowIndex < 5){ // 前5行不能修改
         return false;
         }
         return true;
       }
     */
    return false;//所有单元格不允许编辑
  }
}

class ComponentListPanel_btnCancel_actionAdapter
    implements ActionListener {
  private ComponentListPanel adaptee;
  ComponentListPanel_btnCancel_actionAdapter(ComponentListPanel adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {
    adaptee.btnCancel_actionPerformed(e);
  }
}

class ComponentListPanel_cboManufacturer_itemAdapter
    implements ItemListener {
  private ComponentListPanel adaptee;
  ComponentListPanel_cboManufacturer_itemAdapter(ComponentListPanel adaptee) {
    this.adaptee = adaptee;
  }

  public void itemStateChanged(ItemEvent e) {
    adaptee.cboManufacturer_itemStateChanged(e);
  }
}

class ComponentListPanel_btnSelect_actionAdapter
    implements ActionListener {
  private ComponentListPanel adaptee;
  ComponentListPanel_btnSelect_actionAdapter(ComponentListPanel adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {
    adaptee.btnSelect_actionPerformed(e);
  }
}

class ComponentListPanel_cboComponents_itemAdapter
    implements ItemListener {
  private ComponentListPanel adaptee;
  ComponentListPanel_cboComponents_itemAdapter(ComponentListPanel adaptee) {
    this.adaptee = adaptee;
  }

  public void itemStateChanged(ItemEvent itemEvent) {
    adaptee.cboComponents_itemStateChanged(itemEvent);
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -