package Manager.material;
import javax.swing.*;
import java.awt.*;
import com.borland.jbcl.layout.*;
import javax.swing.border.*;
import java.sql.*;
import java.util.Vector;
import javax.swing.table.*;
import java.awt.event.*;
import Manager.*;
/**
* <p>Copyright: Copyright (c) 2006</p>
* <p>Company: Buptsse</p>
* @author Gong haiping
* @version 1.0
*/
public class productAnalyse extends JFrame{
DBManager db=new DBManager();
ResultSet rs;
JLabel jLabel1 = new JLabel();
XYLayout xYLayout1 = new XYLayout();
TitledBorder titledBorder1;
TitledBorder titledBorder2;
JScrollPane jScrollPane1 = new JScrollPane();
TitledBorder titledBorder3;
//定义DefaultTableModel模型
//DefaultTableModel model =new DefaultTableModel();
TableData m_data = new TableData();
JLabel jLabel2 = new JLabel();
JButton jButton1 = new JButton();
private String employee;
int j=0;
private int[] a=new int[2];
JComboBox jComboBox1 = new JComboBox();
//定义JTable为DefaultTableModel的实例model模式
//JCheckBox jCheckBox=new JCheckBox();
public productAnalyse() throws HeadlessException {
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
private void jbInit() throws Exception {
titledBorder1 = new TitledBorder("");
titledBorder2 = new TitledBorder("");
titledBorder3 = new TitledBorder("");
jLabel1.setFont(new java.awt.Font("Dialog", 0, 16));
jLabel1.setBorder(titledBorder2);
jLabel1.setText("请选择任两个盘库记录来进行盘库分析");
JTable jTable1 = new JTable(m_data);
jTable1.setAutoCreateColumnsFromModel(false);
jTable1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
JTableHeader header = jTable1.getTableHeader();
header.setUpdateTableInRealTime(false);
TableCellRenderer renderer = new CheckCellRenderer();
TableCellEditor editor = new CheckBoxCellEditor();
TableColumn column1 = new TableColumn(0,10,renderer, editor);
jTable1.addColumn(column1);
renderer = new DefaultTableCellRenderer();
editor = new DefaultCellEditor(new JTextField());
TableColumn column2 = new TableColumn(1,10,renderer, editor);
jTable1.addColumn(column2);
renderer = new DefaultTableCellRenderer();
editor = new DefaultCellEditor(new JTextField());
TableColumn column3 = new TableColumn(2,180,renderer, editor);
jTable1.addColumn(column3);
renderer = new DefaultTableCellRenderer();
editor = new DefaultCellEditor(new JTextField());
TableColumn column4 = new TableColumn(3,100,renderer, editor);
jTable1.addColumn(column4);
jComboBox1.addItem("");
ResultSet r = db.query("select name from loveofgod.employee");
while (r.next()) {
jComboBox1.addItem(r.getString("name"));
}
//model.addColumn("选择") ;
//model.addColumn("编号") ;
//model.addColumn("日期") ;
//model.addColumn("盘库人") ;
//TableColumnModel colmodel = jTable1.getColumnModel(); //获取Column模式
//colmodel.getColumn(0).setCellEditor(new DefaultCellEditor(new JCheckBox()));
// Set column widths
//colmodel.getColumn(0).setPreferredWidth(30);
//colmodel.getColumn(0).setPreferredWidth(10);
//colmodel.getColumn(1).setPreferredWidth(120);
//colmodel.getColumn(2).setPreferredWidth(40);
//model.getColumn(0).setPreferredWidth(40);
//model.addColumn("相关信息") ;
this.getContentPane().setBackground(UIManager.getColor("inactiveCaptionText"));
this.setResizable(false); //禁止最大化
this.getContentPane().setLayout(xYLayout1);
this.setTitle("盘库分析");
this.addWindowListener(new productAnalyse_this_windowAdapter(this));
jScrollPane1.getViewport().setBackground(UIManager.getColor("inactiveCaptionText"));
jScrollPane1.setBorder(BorderFactory.createLoweredBevelBorder());
xYLayout1.setWidth(498);
xYLayout1.setHeight(406);
jTable1.setBackground(Color.white);
jTable1.setFont(new java.awt.Font("Dialog", 0, 16));
jTable1.setAutoscrolls(true);
jTable1.setDebugGraphicsOptions(0);
jTable1.setRequestFocusEnabled(true);
jTable1.setVerifyInputWhenFocusTarget(true);
jTable1.setShowVerticalLines(true);
jLabel2.setFont(new java.awt.Font("Dialog", 0, 16));
jLabel2.setBorder(titledBorder2);
jLabel2.setText("选择技师");
jButton1.setBackground(SystemColor.inactiveCaption);
jButton1.setFont(new java.awt.Font("Dialog", 0, 16));
jButton1.setBorder(BorderFactory.createLineBorder(Color.black));
jButton1.setText("分析");
jButton1.addActionListener(new productAnalyse_jButton1_actionAdapter(this));
jComboBox1.setFont(new java.awt.Font("Dialog", 0, 12));
jComboBox1.setBorder(BorderFactory.createLineBorder(Color.black));
this.getContentPane().add(jScrollPane1, new XYConstraints(20, 56, 454, 288));
jScrollPane1.getViewport().add(jTable1, null);
this.getContentPane().add(jLabel1, new XYConstraints(20, 16, 286, 26));
this.getContentPane().add(jComboBox1, new XYConstraints(114, 369, 117, 23));
this.getContentPane().add(jLabel2, new XYConstraints(20, 368, 84, 24));
this.getContentPane().add(jButton1, new XYConstraints(252, 369, 71, 23));
}
private void getResult(){
m_data.insert();
}
public int[] getSelect(){
return a;
}
public String getEmployee(){
return employee;
}
void this_windowOpened(WindowEvent e) {
getResult();
//System.out.println("获得数据!");
}
void jButton1_actionPerformed(ActionEvent e) {
int account=m_data.getRowCount();
if(jComboBox1.getSelectedItem().toString().equals("")){
for (int i = 0; i < account; i++) {
Boolean object = (Boolean) m_data.getValueAt(i, 0);
if ( (object.booleanValue()) == true) {
System.out.println("已选择行:" + i);
String num = m_data.getValueAt(i, 1).toString();
int id=Integer.parseInt(num);
a[j]=id;
j++;
System.out.println("j=" + j);
//System.out.println("已选择物料编号:" + a[--j]);
//rs=db.query("select * from loveofgod.materialanalyse where analyse_id='"+id+"' ");
}
}
if(j==1){
JOptionPane.showMessageDialog(null,"请选择两项!") ;
j--;
return;
}
else if(j==0){
JOptionPane.showMessageDialog(null,"请选择两项!") ;
//j-=2;
return;
}
for(int k=0;k<a.length;k++){
System.out.println("数组:" + a[k]);
}
//for(int k=0;k<a.length;k++){
//a[k]=0;
//}
j=0;
System.out.println("清零成功!");
productAnalyseResult dlg = new productAnalyseResult(this); //当前实例
Dimension dlgSize = dlg.getPreferredSize();
Dimension frmSize = getSize();
Point loc = getLocation();
dlg.setLocation( (frmSize.width - dlgSize.width) / 2 + loc.x,
(frmSize.height - dlgSize.height) / 2 + loc.y);
dlg.pack();
dlg.show();
//this.hide();
System.out.println("最后的j=" + j);
}
else{
employee=jComboBox1.getSelectedItem().toString();
for (int i = 0; i < account; i++) {
Boolean object = (Boolean) m_data.getValueAt(i, 0);
if ( (object.booleanValue()) == true) {
System.out.println("已选择行:" + i);
String num = m_data.getValueAt(i, 1).toString();
int id=Integer.parseInt(num);
a[j]=id;
j++;
System.out.println("j=" + j);
//System.out.println("已选择物料编号:" + a[--j]);
//rs=db.query("select * from loveofgod.materialanalyse where analyse_id='"+id+"' ");
}
}
if(j==1){
JOptionPane.showMessageDialog(null,"请选择两项!") ;
j--;
return;
}
else if(j==0){
JOptionPane.showMessageDialog(null,"请选择两项!") ;
//j-=2;
return;
}
for(int k=0;k<a.length;k++){
System.out.println("数组:" + a[k]);
}
//for(int k=0;k<a.length;k++){
//a[k]=0;
//}
j=0;
System.out.println("清零成功!");
technicianAnalyseResult dlg = new technicianAnalyseResult(this); //当前实例
Dimension dlgSize = dlg.getPreferredSize();
Dimension frmSize = getSize();
Point loc = getLocation();
dlg.setLocation( (frmSize.width - dlgSize.width) / 2 + loc.x,
(frmSize.height - dlgSize.height) / 2 + loc.y);
dlg.pack();
dlg.show();
//this.hide();
System.out.println("最后的j=" + j);
}
this.hide();
}
}
class productAnalyse_this_windowAdapter extends java.awt.event.WindowAdapter {
productAnalyse adaptee;
productAnalyse_this_windowAdapter(productAnalyse adaptee) {
this.adaptee = adaptee;
}
public void windowOpened(WindowEvent e) {
adaptee.this_windowOpened(e);
}
}
class TableData extends AbstractTableModel
{
protected Vector m_vector;
ResultSet rs;
DBManager db=new DBManager();
public TableData() {
m_vector = new Vector();
}
public int getRowCount() {
return m_vector==null ? 0 : m_vector.size();
}
public int getColumnCount() {
return 0; //为什么返回0才不出错?待解
}
public String getColumnName(int column) {
if(column==0)
return "选择";
else if(column==1)
return "编号";
else if(column==2)
return "日期";
else return "盘库人";
}
public boolean isCellEditable(int nRow, int nCol) {
if (nCol==0) {
return true;
}else{
return false;
}
}
public Object getValueAt(int nRow, int nCol) {
Vector record=(Vector)m_vector.elementAt(nRow);
return record.elementAt(nCol);
}
public void setValueAt(Object value, int nRow, int nCol) {
Vector record=(Vector)m_vector.elementAt(nRow);
record.setElementAt(value,nCol);
}
public void insert() {
String sql;
//查询语句
sql="select distinct analyse_id,analyse_time,analyse_person from loveofgod.materialanalyse where material_id in (select material_id from loveofgod.material)";
//执行数据库的查询操作
rs =db.query(sql);
try {
//判断返回的结果集是否为空,若不为空显示每条记录
boolean isexist=false;
try {
isexist = rs.first();
}
catch (SQLException ex) {
System.out.println(ex.toString());
}
//若有数据,显示
if( isexist)
{
//移动游标到零的位置
rs.beforeFirst();
//逐条将查询结果显示在jtable中
while(rs.next() )
{
System.out.println(rs.getString("analyse_id"));
System.out.println(rs.getString("analyse_time"));
System.out.println(rs.getString("analyse_person"));
Vector v=new Vector();
v.addElement(new Boolean(false));
System.out.println("加入checkbox!");
v.add(rs.getString("analyse_id")) ;
v.add(rs.getString("analyse_time")) ;
v.add(rs.getString("analyse_person")) ;
//tempvector.add(rs.getString("remark")) ;
m_vector.addElement(v);
}
}
//若无数据,显示警告对话框
else
{ JOptionPane.showMessageDialog(null,"无纪录!") ;}
}
//若出现异常,弹出警告对话框
catch (SQLException ex) {
System.out.println(ex.toString());
JOptionPane.showMessageDialog(null,"发生错误!");
}
}
public boolean delete(int row) {
if (row < 0 || row >= m_vector.size())
return false;
m_vector.remove(row);
return true;
}
}
class CheckCellRenderer extends JCheckBox implements TableCellRenderer
{
protected static Border m_noFocusBorder;
public CheckCellRenderer() {
super();
m_noFocusBorder = new EmptyBorder(1, 2, 1, 2);
setHorizontalAlignment(JLabel.CENTER);
setOpaque(true);
setBorder(m_noFocusBorder);
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
if (value instanceof Boolean)
{
Boolean b = (Boolean) value;
setSelected(b.booleanValue());
//System.out.println("当前选择状态:"+b.booleanValue());
}
setBackground(isSelected ? table.getSelectionBackground() : table.getBackground());
setForeground(isSelected ? table.getSelectionForeground() : table.getForeground());
setFont(table.getFont());
setBorder(hasFocus ? UIManager.getBorder("Table.focusCellHighlightBorder") : m_noFocusBorder);
return this;
}
}
class CheckBoxCellEditor extends DefaultCellEditor {
private static JCheckBox m_checkBox = new JCheckBox();
private int selectnum;
public CheckBoxCellEditor() {
super(m_checkBox);
m_checkBox.setOpaque(false);
m_checkBox.setHorizontalAlignment(JLabel.CENTER);
}
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
if (value instanceof Boolean)
{
Boolean b = (Boolean) value;
m_checkBox.setSelected(b.booleanValue());
System.out.println("当前选择状态:"+b.booleanValue());
System.out.println("当前行:"+row);
//为什么false才行,待解
if((b.booleanValue())==false){
if(selectnum<2){
selectnum++;
System.out.println("已选择" + selectnum + "项!\n");
}
else{
JOptionPane.showMessageDialog(null,"只能选择两项,请重新选择!");
}
}
else{
selectnum--;
System.out.println("已选择" + selectnum + "项!\n");
}
}
m_checkBox.setBackground(isSelected ? table.getSelectionBackground() : table.getBackground());
m_checkBox.setForeground(isSelected ? table.getSelectionForeground() : table.getForeground());
/**
* Component component = getComponent(); if (component instanceof JCheckBox){ m_checkBox = (JCheckBox)component;
*
*
* table.setValueAt(Boolean.valueOf(String.valueOf(m_checkBox.isSelected())),row,column); return m_checkBox; } else return component;
*/
return m_checkBox;
}
public Object getCellEditorValue() {
return new Boolean(m_checkBox.isSelected());
}
}
class productAnalyse_jButton1_actionAdapter implements java.awt.event.ActionListener {
productAnalyse adaptee;
productAnalyse_jButton1_actionAdapter(productAnalyse adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton1_actionPerformed(e);
}
}
