You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

215 lines
6.5 KiB

/*
#=======================================================================================================
#
# Copyright (c) 2007 Origin Enterprise Solution LTD.
#
#=======================================================================================================
# File description: test.java
#=======================================================================================================
# Date Name Action Description of Change
# 2010-1-6 tyl 修改
# 2010-4-25 zyn 修改 横向显示模式修改为纵向显示模式
#=======================================================================================================
*/
package com.connor.lidy.task.util;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Vector;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.plaf.SplitPaneUI;
import javax.swing.plaf.basic.BasicSplitPaneUI;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
//import components.TableDemo;
public class QueryTaskOpinionTableHead extends JPanel {
/**
* serialVersionUID:(描述变量的功能)
* @since Ver 1.1
*/
private static final long serialVersionUID = 1L;
private Object[][] objArray; // 表中的数据
private DefaultTableModel dm;
private JTable table;
private JTextArea textarea;
// private String[] headers = { "流程名称","序号", "任务" , "签审决定","执行人","提交时间","注释"};
private String[] headers = { "流程名称", "任务", "签审决定", "执行人", "开始时间", "完成时间", "注释" };
public QueryTaskOpinionTableHead() {
super(new GridLayout(1, 0));
}
// 设置组合表格标题
public void setTableHeadTestModel(Vector<String> titleArrayTemp) {
dm = new DefaultTableModel(objArray, headers);
table = new JTable(dm);
textarea = new JTextArea(15,35);
textarea.setAutoscrolls(true);
textarea.setLineWrap(true);
textarea.setEditable(false);
textarea.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent mouseEvent) {
textarea.setCursor(new Cursor(Cursor.TEXT_CURSOR)); //鼠标进入Text区后变为文本输入指针
}
public void mouseExited(MouseEvent mouseEvent) {
textarea.setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); //鼠标离开Text区后恢复默认形态
}
});
textarea.getCaret().addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
textarea.getCaret().setVisible(true); //使textarea区的文本光标显示
}
});
GroupableTableHeader header = new GroupableTableHeader(table.getColumnModel());
table.setTableHeader(header);
table.setPreferredScrollableViewportSize(new Dimension(820, 150));
addListener();
JScrollPane scrollPane = new JScrollPane(table);
JPanel jpane = new JPanel(new BorderLayout());
jpane.add(new JLabel("注释:"), BorderLayout.NORTH);
jpane.add(textarea, BorderLayout.CENTER);
JSplitPane splitPane = new JSplitPane();
splitPane.setOrientation(JSplitPane.HORIZONTAL_SPLIT);
splitPane.setLeftComponent(scrollPane);
splitPane.setRightComponent(jpane);
splitPane.setDividerLocation(0.6);
splitPane.setEnabled(false);
SplitPaneUI ui = splitPane.getUI();
if (ui instanceof BasicSplitPaneUI) {
((BasicSplitPaneUI) ui).getDivider().setBorder(null);//隐藏分割线
}
add(splitPane);
}
public void setobjArray(Object[][] objArrayTemp) {
objArray = objArrayTemp;
}
/*
* This method picks good column sizes. If all column heads are wider than
* the column's cells' contents, then you can just use
* column.sizeWidthToFit().
*/
public void initColumnSizes() {
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
// DefaultTableModel model = (DefaultTableModel) table.getModel();
TableColumn column = null;
Component comp = null;
int headerWidth = 0;
int cellWidth = 0;
TableCellRenderer headerRenderer = table.getTableHeader().getDefaultRenderer();
TableColumnModel colmode = table.getColumnModel();
int count = colmode.getColumnCount();
for (int i = 0; i < count; i++) {
column = table.getColumnModel().getColumn(i);
comp = headerRenderer.getTableCellRendererComponent(table, column.getHeaderValue(), false, false, 0, 0);
headerWidth = comp.getPreferredSize().width;
// if (i == 1) {
// cellWidth = 50;
// }else if (i == 2) {
// cellWidth = 50;
// }else if (i == 3) {
// cellWidth = 80;
// }else if (i == 4) {
// cellWidth = 100;
// }else {
// cellWidth = 130;
// }
if (i == 0) {
cellWidth = 180;
}else if (i == 1) {
cellWidth = 75;
}else if (i == 2) {
cellWidth = 75;
}else if (i == 3) {
cellWidth = 100;
}else {
cellWidth = 130;
}
column.setPreferredWidth(Math.max(headerWidth, cellWidth));
}
}
public String getUserChoose() {
String cellValue = null;
int selectRows = table.getSelectedRows().length;// 取得用户所选行的行数
if (selectRows == 1) {
int selectedRowIndex = table.getSelectedRow(); // 取得用户所选单行
cellValue = (String) table.getValueAt(selectedRowIndex, 6);
}
return cellValue;
}
/**
* 添加单击事件,获得注释信息
*/
public void addListener(){
table.addMouseListener(new MouseListener(){
public void mouseClicked(MouseEvent e) {
String userComments = getUserChoose();
String Comments = "";
if(userComments!=null){
int len = userComments.split("\t").length;
for(int i = 0;i<len;i++){
if(i!=len-1){
Comments = Comments +userComments.split("\t")[i]+"\n";
}else{
Comments = Comments +userComments.split("\t")[i];
}
}
textarea.setText(Comments);
}else{
textarea.setText("");
}
}
public void mouseEntered(MouseEvent e) {
// Auto-generated method stub
}
public void mouseExited(MouseEvent e) {
// Auto-generated method stub
}
public void mousePressed(MouseEvent e) {
// Auto-generated method stub
}
public void mouseReleased(MouseEvent e) {
// Auto-generated method stub
}
});
}
}