天天看点

JTABLE查询数据显示

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; //单元格不可修改

}

}