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

📄 projectpanel.java~229~

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

import java.awt.*;
import javax.swing.*;
import java.util.Vector;
import pcdiysystem.Panel.TableModelOfCellDiseditable;
import pcdiysystem.Dao.DefaultProjectDAO;
import pcdiysystem.Panel.ProjectViewerPanel;
import pcdiysystem.Panel.illegalIndexException;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
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 java.awt.event.FocusEvent;
import java.awt.event.FocusAdapter;
import javax.swing.JOptionPane;
import java.util.Vector;
import java.awt.event.ItemListener;
import java.awt.event.ItemEvent;

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

  BorderLayout borderLayout1 = new BorderLayout();
  JPanel pnlTitle=new JPanel(new FlowLayout());
  JPanel pnlBottom=new JPanel(new BorderLayout());
  JPanel pnlBottomNorth=new JPanel(new FlowLayout());
  JPanel pnlBottomCenter=new JPanel(new FlowLayout());
  JPanel pnlBottomSouth=new JPanel(new FlowLayout());
  JScrollPane scpProject=new JScrollPane();
  JLabel lblTitle=new JLabel("装 机 方 案");
  JLabel lblTotal=new JLabel("价格总计:");
  JLabel lblTotalValue=new JLabel("¥0.00元");
  JButton btnSubmisson=new JButton("提交方案");
  JButton btnCheck=new JButton("查看");
  JButton btnReload=new JButton("刷新");
  JTextField txtProjectName=new JTextField("请为您的方案命名(可缺省)");
  JTextField txtQuantity=new JTextField();
  JComboBox cboCheck=new JComboBox();
  ComponentListPanel pnlLeft;
  JTable tabProjectData;
  DefaultTableModel dataOfProject;
  Vector selectedRecord=new Vector();

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

  public ProjectPanel(ComponentListPanel pnlLeft) {
    try {
      this.pnlLeft=pnlLeft;
      jbInit();
    }
    catch (Exception exception) {
      exception.printStackTrace();
    }
  }
  private void jbInit() throws Exception {
    this.setLayout(borderLayout1);
    pnlTitle.add(lblTitle);
    this.insertToCboCheck();
    this.creatNewProjectTable();
    txtProjectName.setColumns(20);
    pnlBottomNorth.add(lblTotal);
    pnlBottomNorth.add(lblTotalValue);
    pnlBottomCenter.add(txtProjectName);
    pnlBottomCenter.add(btnSubmisson);
    pnlBottomSouth.add(cboCheck);
    pnlBottomSouth.add(btnCheck);
    pnlBottomSouth.add(btnReload);
    pnlBottom.add(pnlBottomNorth,BorderLayout.NORTH);
    pnlBottom.add(pnlBottomCenter,BorderLayout.CENTER);
    pnlBottom.add(pnlBottomSouth,BorderLayout.SOUTH);
    this.add(scpProject,BorderLayout.CENTER);
    this.add(pnlTitle,BorderLayout.NORTH);
    this.add(pnlBottom,BorderLayout.SOUTH);
    tabProjectData.addMouseMotionListener(new ProjectPanel_tabProjectData_mouseMotionAdapter(this));
    tabProjectData.addMouseListener(new ProjectPanel_tabProjectData_mouseAdapter(this));
    txtProjectName.addMouseListener(new ProjectPanel_txtProjectName_mouseAdapter(this));
    txtQuantity.addFocusListener(new ProjectPanel_txtQuantity_focusAdapter(this));
    btnSubmisson.addActionListener(new ProjectPanel_btnSubmisson_actionAdapter(this));
    btnReload.addActionListener(new ProjectPanel_btnReload_actionAdapter(this));
    btnCheck.addActionListener(new ProjectPanel_btnCheck_actionAdapter(this));
    cboCheck.addItemListener(new ProjectPanel_cboCheck_itemAdapter(this));
  }

  void creatNewProjectTable(){
    Vector columnName=new Vector();
    columnName.add("配件");columnName.add("型号");columnName.add("数量");columnName.add("单价");
    int numberOfComponents=pnlLeft.cboComponents.getItemCount();
    for(int i=0;i<numberOfComponents;i++){
      Vector temp=new Vector();
      temp.add(pnlLeft.cboComponents.getItemAt(i));
      selectedRecord.add(temp);
    }
    dataOfProject=new TableModelOfProjectPanel();
    //dataOfProject=new DefaultTableModel();
    dataOfProject.setDataVector(selectedRecord,columnName);
    tabProjectData=new JTable(dataOfProject);
    tabProjectData.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    tabProjectData.getColumnModel().getColumn(2).setCellEditor(new DefaultCellEditor(txtQuantity));
    tabProjectData.getColumnModel().getColumn(1).setPreferredWidth(150);
    tabProjectData.getColumnModel().getColumn(2).setPreferredWidth(45);
    tabProjectData.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    tabProjectData.setDragEnabled(false);
    tabProjectData.getTableHeader().setReorderingAllowed(false);
    scpProject.getViewport().add(tabProjectData);
  }

  void creatNewProjectTable(Vector dataSource){
    Vector columnName=new Vector();
    columnName.add("配件");columnName.add("型号");columnName.add("数量");columnName.add("单价");
    dataOfProject=new TableModelOfProjectPanel();
    //dataOfProject=new DefaultTableModel();
    dataOfProject.setDataVector(dataSource,columnName);
    tabProjectData=new JTable(dataOfProject);
    tabProjectData.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    tabProjectData.getColumnModel().getColumn(2).setCellEditor(new DefaultCellEditor(txtQuantity));
    tabProjectData.getColumnModel().getColumn(1).setPreferredWidth(150);
    tabProjectData.getColumnModel().getColumn(2).setPreferredWidth(45);
    tabProjectData.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    tabProjectData.setDragEnabled(false);
    tabProjectData.getTableHeader().setReorderingAllowed(false);
    scpProject.getViewport().add(tabProjectData);
  }
/*已过时,数量大于1时结果与预期不符
  void creatNewProjectTable(Vector dataFromPnlLeft){
    Vector columnName=new Vector();
    columnName.add("配件");columnName.add("数量");columnName.add("单价");columnName.add("型号");
    dataOfProject=new TableModelOfCellDiseditable();
    dataOfProject.setDataVector(dataFromPnlLeft,columnName);
    tabProjectData=new JTable(dataOfProject);
    tabProjectData.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    scpProject.getViewport().add(tabProjectData);
  }
*/

  void insertToCboCheck(){
    cboCheck.removeAllItems();
    DefaultProjectDAO dpd = new DefaultProjectDAO();
    cboCheck.addItem("请选择希望查看的方案");
    cboCheck.addItem("----------------");
    Vector nameItem=dpd.getProjectName();
    for(int i=0;i<nameItem.size();i++){
      cboCheck.addItem(nameItem.get(i));
    }
  }

/*非三层结构,已过时
  float calculateAndInsertData(){
    try{
      float total = 0;
      for (int i = 0; i < tabProjectData.getRowCount(); i++) {
        String pTemp = String.valueOf(tabProjectData.getValueAt(i, 3));
        String qTemp = String.valueOf(tabProjectData.getValueAt(i, 2));
        if (!pTemp.equals("null") && !qTemp.equals("null")) {
          float price = Float.valueOf(pTemp.substring(1));
          int quantity = Integer.valueOf(qTemp);
          total += (price * quantity);
        }
      }

      lblTotalValue.setText("¥" + String.valueOf(total) + "0元");
      return total;
    }catch(NumberFormatException ne){
      JOptionPane.showMessageDialog(this,"请输入有效整数","出错啦!",JOptionPane.ERROR_MESSAGE);
    }finally{
      return -1f;
    }
  }
*/
  public ProjectPanel returnCurrentObject(){
    return this;
  }
  public void txtProjectName_mouseClicked(MouseEvent e) {
    if(txtProjectName.getText().equals("请为您的方案命名(可缺省)"))
      txtProjectName.selectAll();
  }

  public void tabProjectData_mouseMoved(MouseEvent e) {
    tabProjectData.setToolTipText("双击“数量”单元格可修改数量");
  }

  public void txtQuantity_focusGained(FocusEvent e) {

  }

  public void txtQuantity_focusLost(FocusEvent e) {
   //calculateAndInsertData();已过时,非三层结构
   new DefaultProjectDAO(this).calculate();
  }

  public void btnSubmisson_actionPerformed(ActionEvent e) {
    DefaultProjectDAO dpd = new DefaultProjectDAO();
    TableModel tmTemp=this.tabProjectData.getModel();
    if(!dpd.isTableEmpty(tmTemp)){
      String idTemp = dpd.creatProjectId();
      String projectName = txtProjectName.getText().trim();
      String price = lblTotalValue.getText().substring(0,
          lblTotalValue.getText().lastIndexOf("元"));
      if (dpd.creatSQLTable(idTemp)) {
        Object[] buttonText = {
            "是的,不改了", "让我再想想"};
        int index = JOptionPane.showOptionDialog(this, "您确定提交此方案吗?", "",
                                                 JOptionPane.OK_CANCEL_OPTION,
                                                 JOptionPane.QUESTION_MESSAGE, null,
                                                 buttonText, buttonText[0]);
        if (index == 0) {
          dpd.insertDataToProjectManagement(idTemp, projectName, price);
          Vector dataSource = dpd.getDataFromTableMOdel(tmTemp);
          dpd.insertDataToDefaultProject(dataSource, idTemp);
        }
        else {
          dpd.dropSQLTable(idTemp);
        }
      }
    }else{
      JOptionPane.showMessageDialog(this,"好像没有数据哦!","无法提交方案",JOptionPane.ERROR_MESSAGE);
    }
  }

  public void btnReload_actionPerformed(ActionEvent e) {
    this.insertToCboCheck();
  }

  public void btnCheck_actionPerformed(ActionEvent e)throws illegalIndexException{

    DefaultProjectDAO dpd=new DefaultProjectDAO(this);
    try{
      int index = cboCheck.getSelectedIndex();
      if (index < 2) {
        throw new illegalIndexException();
      }
    }catch (illegalIndexException iie) {
      JOptionPane.showMessageDialog(this,"请选择方案!");
      return;
    }
    String projectName=String.valueOf(cboCheck.getSelectedItem());
    Vector dataSource=dpd.getProjectData(projectName);
    this.creatNewProjectTable(dataSource);
    dpd.getProjectCost(projectName);
  }

  public void cboCheck_itemStateChanged(ItemEvent e) {

  }

  public void tabProjectData_mouseClicked(MouseEvent e){
    if(e.getClickCount()==2 && e.getButton()==e.BUTTON1){
      try {
        for (int i = 0; i < 3; i++) {
          dataOfProject.setValueAt(null, pnlLeft.cboComponents.getSelectedIndex(),
                                   i + 1);
          dataOfProject.fireTableDataChanged();
        }
        new DefaultProjectDAO(this).calculate();
      }
      catch (NumberFormatException ne) {
        JOptionPane.showMessageDialog(this, "没有可取消的项目!", "出错了!",
                                      JOptionPane.ERROR_MESSAGE);
      }
    }
  }

  public JLabel getLblTotalValue(){
    return this.lblTotalValue;
  }

  public JTable getTabProjectData(){
    return this.tabProjectData;
  }

}

class TableModelOfProjectPanel
    extends DefaultTableModel{
 public TableModelOfProjectPanel() {
 }

 public boolean isCellEditable(int rowIndex, int columnIndex) {
   if (columnIndex == 2) { // 只有“数量”即第三列允许被编辑
     return true;
   }
   return false;
 }
}

class ProjectPanel_txtProjectName_mouseAdapter
    extends MouseAdapter {
  private ProjectPanel adaptee;
  ProjectPanel_txtProjectName_mouseAdapter(ProjectPanel adaptee) {
    this.adaptee = adaptee;
  }

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

class ProjectPanel_tabProjectData_mouseAdapter
    extends MouseAdapter {
  private ProjectPanel adaptee;
  ProjectPanel_tabProjectData_mouseAdapter(ProjectPanel adaptee) {
    this.adaptee = adaptee;
  }

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

class ProjectPanel_tabProjectData_mouseMotionAdapter
    extends MouseMotionAdapter {
  private ProjectPanel adaptee;
  ProjectPanel_tabProjectData_mouseMotionAdapter(ProjectPanel adaptee) {
    this.adaptee = adaptee;
  }

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

class ProjectPanel_txtQuantity_focusAdapter
    extends FocusAdapter {
  private ProjectPanel adaptee;
  ProjectPanel_txtQuantity_focusAdapter(ProjectPanel adaptee) {
    this.adaptee = adaptee;
  }

  public void focusLost(FocusEvent e) {
    adaptee.txtQuantity_focusLost(e);
  }

  public void focusGained(FocusEvent e) {
    adaptee.txtQuantity_focusGained(e);
  }
}

class ProjectPanel_btnSubmisson_actionAdapter
    implements ActionListener {
  private ProjectPanel adaptee;
  ProjectPanel_btnSubmisson_actionAdapter(ProjectPanel adaptee) {
    this.adaptee = adaptee;
  }

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

class ProjectPanel_btnReload_actionAdapter
    implements ActionListener {
  private ProjectPanel adaptee;
  ProjectPanel_btnReload_actionAdapter(ProjectPanel adaptee) {
    this.adaptee = adaptee;
  }

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

class ProjectPanel_btnCheck_actionAdapter
    implements ActionListener{
  private ProjectPanel adaptee;
  ProjectPanel_btnCheck_actionAdapter(ProjectPanel adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e){
    try{
      adaptee.btnCheck_actionPerformed(e);
    }catch(illegalIndexException iie){

    }
  }
}
class ProjectPanel_cboCheck_itemAdapter
    implements ItemListener {
  private ProjectPanel adaptee;
  ProjectPanel_cboCheck_itemAdapter(ProjectPanel adaptee) {
    this.adaptee = adaptee;
  }

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

class illegalIndexException
    extends Exception{
}

⌨️ 快捷键说明

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