package swing;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.Vector;
import javax.swing.DefaultCellEditor;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableModel;
public class QueryJTable extends JFrame implements ActionListener
{
private static final long serialVersionUID = 1L;
private DefaultTableModel tableModel; //表格模型对象
private JTable table;
JComboBox yearbox;
JComboBox mthBox;
public QueryJTable()
{
super();
setTitle("详情");
setBounds(400, 400, 600, 300);
//setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//获取当前日期
String yearMth = getCurDateStr();
String curYear = yearMth.substring(0, 4);
String curMth = yearMth.substring(4);
JPanel ym = new JPanel();
ym.setLayout(new GridLayout(1, 2));
yearbox = new JComboBox();
for (int i = 2010; i < 2050; i++)
{
yearbox.addItem(i);
}
yearbox.setSelectedItem(Integer.valueOf(curYear));
mthBox = new JComboBox();
mthBox.addItem("01");
mthBox.addItem("02");
mthBox.addItem("03");
mthBox.addItem("04");
mthBox.addItem("05");
mthBox.addItem("06");
mthBox.addItem("07");
mthBox.addItem("08");
mthBox.addItem("09");
mthBox.addItem("10");
mthBox.addItem("11");
mthBox.addItem("12");
mthBox.setSelectedItem(curMth);
ym.add(yearbox);
ym.add(mthBox);
getContentPane().add(ym, BorderLayout.NORTH);
JButton changeTheLabel = new JButton("查询");
changeTheLabel.setMnemonic(KeyEvent.VK_C);
changeTheLabel.setAlignmentX(Component.LEFT_ALIGNMENT);
changeTheLabel.addActionListener(this);
getContentPane().add(changeTheLabel, BorderLayout.SOUTH);
JScrollPane scrollPane = new JScrollPane(); //支持滚动
getContentPane().add(scrollPane, BorderLayout.CENTER);
String[] columnNames = { "时间", "交通费", "伙食费" };
Vector columnNameV = new Vector(); //获得表头
for (int column = 0; column < columnNames.length; column++)
{
columnNameV.add(columnNames[column]);
}
Vector tableValueV = new Vector();
for (int row = 1; row < 11; row++) //获得数据
{
Vector rowV = new Vector();
for (int column = 0; column < columnNames.length; column++)
{
rowV.add(columnNames[column] + row); //数据
}
tableValueV.add(rowV);
}
tableModel = new DefaultTableModel(tableValueV, columnNameV);
table = new MyTable(tableModel);
table.setDefaultEditor(Object.class, new MyEditor());
//table = new MyTable(tableValueV, columnNameV); //自定义的表格
//设置列宽
table.getColumnModel().getColumn(0).setMinWidth(200);
table.getColumnModel().getColumn(1).setMinWidth(200);
table.getColumnModel().getColumn(2).setMinWidth(200);
DefaultTableCellRenderer cellrender = new DefaultTableCellRenderer();
cellrender.setHorizontalAlignment(JTextField.CENTER);
table.getColumnModel().getColumn(0).setCellRenderer(cellrender);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); //关闭表格列的自动调整功能。
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); //单选
table.setSelectionBackground(Color.YELLOW);
table.setSelectionForeground(Color.RED);
table.setRowHeight(20);
scrollPane.setViewportView(table); //支持滚动
}
/**
* 获取当前年月的字符串
*/
public static String getCurDateStr()
{
Date date = Calendar.getInstance().getTime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
return sdf.format(date);
}
/**
* @param args
*/
public static void main(String[] args)
{
// TODO Auto-generated method stub
QueryJTable jTableDefineTest = new QueryJTable();
jTableDefineTest.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
if (tableModel.getRowCount() > 0)
{
for (int row = tableModel.getRowCount() - 1; row >= 0; row--)
{
tableModel.removeRow(row);
}
}
String ym = yearbox.getSelectedItem().toString() + "-"
+ mthBox.getSelectedItem().toString();
ArrayList al = FileTool.readFileContent("e:/test.txt", ym);
for (int i = 0; i < al.size(); i++)
{
ArrayList obj = (ArrayList)al.get(i);
tableModel.addRow(obj.toArray());
}
}
}
class MyEditor extends DefaultCellEditor
{
private static final long serialVersionUID = 1781979580278898929L;
public MyEditor()
{
super(new JTextField());
}
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected,
int row, int column)
{
//获得默认表格单元格控件
JTextField editor = (JTextField)super.getTableCellEditorComponent(table, value, isSelected,
row, column);
if (value != null)
editor.setText(value.toString());
if (column == 0)
{ //设置对齐方式
editor.setHorizontalAlignment(SwingConstants.CENTER);
editor.setFont(new Font("Serif", Font.BOLD, 14));
}
else
{
editor.setHorizontalAlignment(SwingConstants.RIGHT);
editor.setFont(new Font("Serif", Font.ITALIC, 12));
}
return editor;
}
}
class MyTable extends JTable
{
private static final long serialVersionUID = 1L;
public MyTable(Vector rowData, Vector columnNames)
{
super(rowData, columnNames);
}
public MyTable(TableModel dm)
{
super(dm);
}
public JTableHeader getTableHeader()
{
JTableHeader tableHeader = super.getTableHeader();
tableHeader.setReorderingAllowed(false); //设置表格列不可重排
DefaultTableCellRenderer hr = (DefaultTableCellRenderer)tableHeader.getDefaultRenderer(); //获得表格头的单元格对象
hr.setHorizontalAlignment(DefaultTableCellRenderer.CENTER); //列名居中
return tableHeader;
}
public TableCellRenderer getDefaultRenderer(Class<?> columnClass)
{
DefaultTableCellRenderer cr = (DefaultTableCellRenderer)super
.getDefaultRenderer(columnClass);
cr.setHorizontalAlignment(DefaultTableCellRenderer.RIGHT); //单元格内容居中
return cr;
}
public boolean isCellEditable(int row, int column)
{
return false; //单元格不可修改
}
}