tbxsz用户界面程序实现

package com.boomlink.design.rdc;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.List;
import java.util.Vector;
import javax.swing.BorderFactory;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import com.boomlink.design.mainFrame;
import com.boomlink.design.item.CheckBox;
import com.boomlink.design.item.Jxsgs;
import com.boomlink.design.system.BaseFrame;
import com.boomlink.utils.SwingUtils;
import com.boomlink.web.model.Tb;
import com.boomlink.web.model.Xsgs;
public class Tbxsz extends BaseFrame {
   /**
    * JTable标题
    */    
   private String [] title =    
    {
       "图表ID",    
       "模块ID",    
       "图表名称",    
       "图表类型ID",    
       "对应行号",    
       "X轴对应数据",    
       "Y轴对应数据",    
       "是否动态展现",    
       "模块名称",    
       "X轴标题",    
       "Y轴标题",    
       "图表类型"
    };    
   /**
    * JTable表格
    */    
  JTable jt;    
   /**
    * JTable表格数据模型
    */
  DefaultTableModel defaultModel;    
   /**
    * 图表ID
    */
  JTextField jtbid;
   /**
    * 图表名称
    */
  JTextField jtbmc;
   /**
    * 对应行号
    */
  JTextField jdyhh;
   /**
    * X轴对应数据
    */
  JTextField jxsj;
   /**
    * Y轴对应数据
    */
  JTextField jysj;
   /**
    * X轴标题
    */
  JTextField jxzbt;
   /**
    * Y轴标题
    */
  JTextField jyzbt;    
   /**
    * 图表类型
    */
  Jxsgs jtblx;
   /**
    * 模块名称
    */
  Jxsgs jmkmc;    
   /**
    * 是否动态展现
    */
  CheckBox jdtzx;
   /**
    * 新增按钮
    */
  JButton addBtn;
   /**
    * 删除按钮
    */
  JButton delBtn;
   /**
    * 保存按钮
    */
  JButton savBtn;    
   /**
    * 新增状态
    */
  Boolean isnew = false;
    
   /**
    * 创造Tbxsz类的一个实例
    */
   public Tbxsz(){
     build();
     listTb();
  }    
   /**
    * 创造模块名称
    */
   private void createJmkmc(){
    String url = mainFrame.BASEURL + "tbxszAction.do?method=listMkmc";
    List<Xsgs> list = (List<Xsgs>)SwingUtils.request(url, "");
     for( int i = 0; i < list.size(); i++){
      DefaultComboBoxModel cm = jmkmc.getModel();
      cm.addElement(list.get(i));
    }
  }
   /**
    * 将Tb类的实例转换为Object数组
    * @param tb Tb
    * @return Object[]
    */
   private Object[] tb2Array(Tb tb){
    Object[] o = new Object[]{tb.getTbid(), tb.getMkid(), tb.getTbmc(), tb.getTblx(),
        tb.getDyhh(), tb.getXzdysj(), tb.getYzdysj(), tb.getSfdtzx(), tb.getMkmc(),
        tb.getXzbt(), tb.getYzbt(), tb.getTblxmc()};
     return o;
  }    
   /**
    * 将Verctor类的实例显示在界面上
    * @param v Vector<String>
    */
   private void vector2Comp(Vector<String> v){
    jtbid.setText(v.get(0));
    jtbmc.setText(v.get(2));
    jdyhh.setText(v.get(4));
    jxsj.setText(v.get(5));
    jysj.setText(v.get(6));
    jdtzx.setCheckb(v.get(7));
    jmkmc.selectItem(v.get(8));
    jxzbt.setText(v.get(9));
    jyzbt.setText(v.get(10));
    jtblx.selectItem(v.get(11));
  }    
   /**
    * 使用界面上输入项组件的数据创建Tb类的一个实例
    * @return Tb
    */
   private Tb comp2Tb(){
    Tb tb = new Tb();
    tb.setTbid(jtbid.getText());
    tb.setMkid(jmkmc.getXsgsValue());
    tb.setTbmc(jtbmc.getText());
    tb.setTblx(jtblx.getXsgsValue());
    tb.setDyhh(jdyhh.getText());
    tb.setXzdysj(jxsj.getText());
    tb.setYzdysj(jysj.getText());
    tb.setSfdtzx(jdtzx.getState());
    tb.setMkmc(jmkmc.getXsgsmc());
    tb.setXzbt(jxzbt.getText());
    tb.setYzbt(jyzbt.getText());
    tb.setTblxmc(jtblx.getXsgsmc());
     return tb;
  }
   /**
    * 列出已有的Tb类的数据
    */
   private void listTb(){
    String url = mainFrame.BASEURL + "tbxszAction.do?method=listTb";
    List<Tb> list = (List<Tb>)SwingUtils.request(url, "");
     for( int i = 0; i < list.size(); i++){
      Tb tb = list.get(i);
      Object[] o = tb2Array(tb);
      defaultModel.addRow(o);
    }
  }
   /**
    * 初始化界面上输入组件的值
    */
   private void initEditItem(){
    jtbid.setText("");
    jtbmc.setText("");
    jtblx.setselected(0);
    jdyhh.setText("");
    jxsj.setText("");
    jysj.setText("");
    jmkmc.setselected(0);
    jxzbt.setText("");
    jyzbt.setText("");
    jdtzx.clearSelected();
  }
   /**
    * 设置界面上增加、删除、保存三个功能按钮的Enable状态
    * @param addEnable boolean
    * @param delEnable boolean
    * @param savEnable boolean
    */
   private void setButtonState( boolean addEnable, boolean delEnable, boolean savEnable){
    addBtn.setEnabled(addEnable);
    delBtn.setEnabled(delEnable);
    savBtn.setEnabled(savEnable);
  }
   /**
    * SET新增状态
    * @param b boolean
    */
   private void setNew( boolean b){
     this.isnew = b;    
  }
   /**
    * GET新增状态
    * @return boolean
    */
   private boolean getNew(){
     return this.isnew;
  }
   /**
    * 构造界面
    */
   private void build(){    
     // 创造JTable实例,JTable中的单元格不可编辑
    jt = new JTable();
    defaultModel = new DefaultTableModel( null, title){
       public boolean isCellEditable( int row, int column){
         return false;
      }        
    };
    jt.setModel(defaultModel);
    
     // 隐藏JTable中的不显示的列
    SwingUtils.hideTableColumn(jt, 0);
    SwingUtils.hideTableColumn(jt, 1);
    SwingUtils.hideTableColumn(jt, 3);    
    SwingUtils.hideTableColumn(jt, 4);
    
    JPanel tbPanel = new JPanel( new BorderLayout());
    
     // 添加JTable实例的标题
    tbPanel.add(jt.getTableHeader(), "North");
    
     // 添加JTable实例
    tbPanel.add(jt, "Center");
    jt.setBorder(BorderFactory.createEtchedBorder());;
    
    JPanel editP = this.createOperatJPanel();
    editP.setBorder(BorderFactory.createEtchedBorder());
    
     // 添加操作区面板
    tbPanel.add(editP, "South");
    
    setLayout( new BorderLayout());
    add(tbPanel);
  }
   /**
    * 创造操作区面板
    * @return JPanel
    */
   private JPanel createOperatJPanel() {
    
     // 将输入项组件图表ID、模块ID、图表名称、图表类型、对应行号添加到JPanel
    JPanel p1 = new JPanel( new FlowLayout(FlowLayout.LEFT));
    
    jtbid = new JTextField(20);
    jtbid.setVisible( false);
    p1.add(jtbid);
    
    p1.add( new JLabel( "图表名称"));
    jtbmc = new JTextField(20);
    p1.add(jtbmc);
    
    jtblx = new Jxsgs( "tblx", "图表类型");
    p1.add(jtblx);
    
    p1.add( new JLabel( "对应行号"));
    jdyhh = new JTextField(20);
    p1.add(jdyhh);
    
     // 将输入项组件X轴对应数据、Y轴对应数据、是否动态展现添加到JPanel
    JPanel p2 = new JPanel( new FlowLayout(FlowLayout.LEFT));
    
    p2.add( new JLabel( "X轴对应数据"));
    jxsj = new JTextField(20);
    p2.add(jxsj);
    
    p2.add( new JLabel( "Y轴对应数据"));
    jysj = new JTextField(20);
    p2.add(jysj);
    
    jdtzx = new CheckBox( "是否动态展现");
    p2.add(jdtzx);
     // 将输入项组件模块名称、X轴标题、Y轴标题添加到JPanel
    JPanel p4 = new JPanel( new FlowLayout(FlowLayout.LEFT));
    
    jmkmc = new Jxsgs( "mkmc", "模块名称");
    createJmkmc();
    p4.add(jmkmc);
    
    p4.add( new JLabel( "X轴标题"));
    jxzbt = new JTextField(20);
    p4.add(jxzbt);
    
    p4.add( new JLabel( "Y轴标题"));
    jyzbt = new JTextField(20);
    p4.add(jyzbt);
    
     // 将功能按钮新增、保存、删除添加到JPanel
    JPanel p3 = new JPanel( new FlowLayout(FlowLayout.LEFT));
    
    addBtn = new JButton( "新增");
    p3.add(addBtn);
    
    savBtn = new JButton( "保存");
    p3.add(savBtn);
    
    delBtn = new JButton( "删除");
    p3.add(delBtn);    
    
     // 按钮起初状态:增加可用、保存不可用、删除不可用
     this.setButtonState( true, false, false);
    
     // JTable实例点击事件处理
    jt.addMouseListener( new MouseAdapter(){
       public void mouseClicked(MouseEvent e) {
         int ind = jt.rowAtPoint(e.getPoint());
         if(ind == -1){ return;}
        Vector<String> v = (Vector<String>)defaultModel.getDataVector().get(ind);
        vector2Comp(v);
        setButtonState( true, true, true);
        setNew( false);
      }
    });    
    
     // 增加按钮点击事件处理
    addBtn.addActionListener( new ActionListener(){
       public void actionPerformed(ActionEvent e) {
        initEditItem();
        setButtonState( true, false, true);
        setNew( true);
      }
    });
    
     // 删除按钮点击事件处理
    delBtn.addActionListener( new ActionListener(){
       public void actionPerformed(ActionEvent e) {
         int ind = jt.getSelectedRow();
         if(ind == -1){ return;}
        String tbid = jt.getModel().getValueAt(ind, 0).toString();
        String url = mainFrame.BASEURL + "tbxszAction.do?method=deleteTb&tbid=" + tbid;
        SwingUtils.request(url, "");
        defaultModel.removeRow(ind);
        initEditItem();
        setButtonState( true, false, false);
        setNew( false);
      }
    });
     // 保存按钮点击事件处理
    savBtn.addActionListener( new ActionListener(){
       public void actionPerformed(ActionEvent arg0) {
         if(getNew()){
          Tb tb = comp2Tb();
          tb.setTbid( null);
          String url = mainFrame.BASEURL + "tbxszAction.do?method=saveTb";
          tb = (Tb)SwingUtils.request(url, tb);
          defaultModel.addRow(tb2Array(tb));
        } else{
          Tb tb = comp2Tb();
          String url = mainFrame.BASEURL + "tbxszAction.do?method=saveTb";
          tb = (Tb)SwingUtils.request(url, tb);
           int sr = jt.getSelectedRow();
          defaultModel.removeRow(sr);
          defaultModel.insertRow(sr, tb2Array(tb));
        }
        initEditItem();
        setButtonState( true, false, false);
        setNew( false);
      }
    });
     // 将各面板添加到JPanel
    JPanel panel = new JPanel( new GridLayout(4, 1));
    panel.add(p1);
    panel.add(p4);
    panel.add(p2);
    panel.add(p3);
    
     return panel;
  }
}

你可能感兴趣的:(职场,休闲,注释代码)