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

📄 componentlistpanel.java~166~

📁 些程序用java实现一个装机程序,不过是一个C/S架构,但是在数据库的设计方面与3层架构的构造方案我想对一些朋友还是否有一定的帮助吧
💻 JAVA~166~
字号:
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;

  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);
    txtDetail.setEditable(false);
    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);
  }

  public 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.setSelectedIndex(0);
  }

  public ComponentListPanel getCurrentObject() {
    return this;
  }

  public 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.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);
     */
    //每次重新绘制右表
    /*
        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();
    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();
  }

  public void btnCancel_actionPerformed(ActionEvent e) {
    /*//已过时,数量大于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));*/
   try {
     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("/");
      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 + -