java swing 报表打印,java 界面swing之报表

java 界面swing之表格

package othertest;

import java.awt.BorderLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.table.AbstractTableModel;

public class SetValueAtToSetValue extends JFrame {

public SetValueAtToSetValue() {

final AbstractTableModel model = new MyModel();

final JTable table = new JTable(model);

getContentPane().add(new JScrollPane(table), BorderLayout.CENTER);

model.setValueAt(new Integer(1), 0, 0);

JButton button = new JButton("Increment selected cell");

getContentPane().add(button, BorderLayout.SOUTH);

button.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

int row = table.getSelectedRow(); // 得到选中的行,-1代表没有选中任何行

if (row >= 0) { // 改变单元格内容

// 将视图中位于 table.getSelectedColumn() 的列索引映射到表模型中的列索引。

int column = table.convertColumnIndexToModel(table

.getSelectedColumn());

int currentValue = ((Integer) model.getValueAt(row, column))

.intValue();

model

.setValueAt(new Integer(currentValue + 1), row,

column); // 模型改变,表格内容自动变

} else {

// 将每个单元格归零

int column = model.getColumnCount();

int rows = model.getRowCount();

for (int i = 0; i < rows; i++) {

for (int j = 0; j < column; j++) {

model.setValueAt(new Integer(0), i, j);

}

}

}

}

});

// 调整此窗口的大小,以适合其子组件的首选大小和布局。

// 如果该窗口和/或其所有者还不可显示,则在计算首选大小之前都将变得可显示。在计算首选大小之后,将会验证该窗口。

pack();

}

public static void main(String arg[]) {

SetValueAtToSetValue ex2 = new SetValueAtToSetValue();

ex2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

ex2.setVisible(true);

}

}

class MyModel extends AbstractTableModel { // 自定义表格模型

private int[][] table = { new int[3], new int[3], new int[3] };

public MyModel() {

for (int i = 0; i < 3; i++) {

for (int j = 0; j < 3; j++) {

table[i][j] = i + j;

}

}

}

public int getColumnCount() {

return table.length;

}

public int getRowCount() {

return table[0].length;

}

public Object getValueAt(int r, int c) {

return new Integer(table[r][c]);

}

public void setValueAt(Object obj, int r, int c) {

table[r][c] = ((Integer) obj).intValue();

fireTableCellUpdated(r, c); // 通知所有侦听器,已更新 [row, column] 处的单元格值。

}

}

package othertest;

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

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.table.AbstractTableModel;

import javax.swing.table.TableColumnModel;

/**

* JTable的实用小例子

*

* @author 五斗米

* @blog http://blog.csdn.net/mq612

*/

public class Test {

private JFrame frame = null;

private JTable table = null;

private Table_Model model = null;

private JScrollPane s_pan = null;

private JButton button_1 = null, button_2 = null, button_3 = null;

private JPanel pane = null;

public Test() {

frame = new JFrame("JTableTest");

pane = new JPanel();

button_1 = new JButton("清除数据");

button_1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

removeData();

}

});

button_2 = new JButton("添加数据");

button_2.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

addData();

}

});

button_3 = new JButton("保存数据");

button_3.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

saveData();

}

});

pane.add(button_1);

pane.add(button_2);

pane.add(button_3);

model = new Table_Model(20);

table = new JTable(model);

table.setBackground(Color.white);

String[] age = { "16", "17", "18", "19", "20", "21", "22" };

JComboBox com = new JComboBox(age);

TableColumnModel tcm = table.getColumnModel();

tcm.getColumn(3).setCellEditor(new DefaultCellEditor(com));

tcm.getColumn(0).setPreferredWidth(50);

tcm.getColumn(1).setPreferredWidth(100);

tcm.getColumn(2).setPreferredWidth(50);

s_pan = new JScrollPane(table);

frame.getContentPane().add(s_pan, BorderLayout.CENTER);

frame.getContentPane().add(pane, BorderLayout.NORTH);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setSize(300, 200);

frame.setVisible(true);

}

private void addData() {

model.addRow("李逵", true, "19");

table.updateUI();

}

private void removeData() {

model.removeRows(0, model.getRowCount());

table.updateUI();

}

// 保存数据,暂时是将数据从控制台显示出来

private void saveData() {

int col = model.getColumnCount();

int row = model.getRowCount();

for (int i = 0; i < col; i++) {

System.out.print(model.getColumnName(i) + "\t");

}

System.out.print("\r\n");

for (int i = 0; i < row; i++) {

for (int j = 0; j < col; j++) {

System.out.print(model.getValueAt(i, j) + "\t");

}

System.out.print("\r\n");

}

System.out.println("------------------------------------");

}

public static void main(String args[]) {

new Test();

System.out

.println("按下保存按钮将会把JTable中的内容显示出来\r\n------------------------------------");

}

}

/**

* TableModel类,继承了AbstractTableModel

*

* @author 五斗米

*

*/

class Table_Model extends AbstractTableModel {

private static final long serialVersionUID = -7495940408592595397L;

private Vector content = null;

private String[] title_name = { "ID", "姓名", "性别", "年龄" };

public Table_Model() {

content = new Vector();

}

public Table_Model(int count) {

content = new Vector(count);

}

public void addRow(String name, boolean sex, String age) {

Vector v = new Vector(4);

v.add(0, new Integer(content.size()));

v.add(1, name);

v.add(2, new Boolean(sex));

v.add(3, age);

content.add(v);

}

public void removeRow(int row) {

content.remove(row);

}

public void removeRows(int row, int count) {

for (int i = 0; i < count; i++) {

if (content.size() > row) {

content.remove(row);

}

}

}

/**

* 让表格中某些值可修改,但需要setValueAt(Object value, int row, int col)方法配合才能使修改生效

*/

public boolean isCellEditable(int rowIndex, int columnIndex) {

if (columnIndex == 0) {

return false;

}

return true;

}

/**

* 使修改的内容生效

*/

public void setValueAt(Object value, int row, int col) {

((Vector) content.get(row)).remove(col);

((Vector) content.get(row)).add(col, value);

this.fireTableCellUpdated(row, col);

}

public String getColumnName(int col) { //返回列名,即表头

return title_name[col];

}

public int getColumnCount() {

return title_name.length;

}

public int getRowCount() {

return content.size();

}

public Object getValueAt(int row, int col) {

return ((Vector) content.get(row)).get(col);

}

/**

* 返回数据类型

*/

public Class getColumnClass(int col) {

return getValueAt(0, col).getClass();

}

}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值