博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java自动计算表格某一数字列的和(2)
阅读量:4491 次
发布时间:2019-06-08

本文共 2940 字,大约阅读时间需要 9 分钟。

package com.han;import java.awt.BorderLayout;import java.awt.Container;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.util.Vector;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.JTextField;import javax.swing.event.TableModelEvent;import javax.swing.event.TableModelListener;import javax.swing.table.DefaultTableModel;/** * 自动计算表格某一数字列的和(2) * @author HAN * */public class TableModelEvent_2_Modified extends JFrame {		/**	 * 	 */	private static final long serialVersionUID = 465495126108026319L;	float sum = 0;	Object currentSelectedValue;	public TableModelEvent_2_Modified() {		// TODO Auto-generated constructor stub		final Container container = getContentPane();		JScrollPane scrollPane = new JScrollPane();		Vector
tableNames = new Vector
(); tableNames.add("数字列"); Vector
> tableValues = new Vector
>(); for (int i = 0; i < 4; i++) { Vector
vector = new Vector
(); vector.add(null); tableValues.add(vector); } final DefaultTableModel defaultTabelModel = new DefaultTableModel( tableValues, tableNames); final JTable table = new JTable(defaultTabelModel); scrollPane.setViewportView(table); container.add(scrollPane, BorderLayout.CENTER); JPanel panel = new JPanel(); JLabel label = new JLabel("数字列总和:"); final JTextField textField = new JTextField(10); panel.add(label); panel.add(textField); container.add(panel, BorderLayout.SOUTH); table.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (e.getButton() == MouseEvent.BUTTON1) { currentSelectedValue = table.getValueAt(table.getSelectedRow(), table.getSelectedColumn()); } } }); defaultTabelModel.addTableModelListener(new TableModelListener() { @Override public void tableChanged(TableModelEvent e) { // TODO Auto-generated method stub if (e.getType() == TableModelEvent.UPDATE) { int row = e.getFirstRow(); int column = e.getColumn(); if (currentSelectedValue != null) { sum -= Float.parseFloat((String) currentSelectedValue); } // keep that every cell value is float or null. try { sum += Float.parseFloat((String) table.getValueAt(row, column)); } catch (NumberFormatException e1) { JOptionPane.showMessageDialog(container, "Your input object is not a float type"); defaultTabelModel.setValueAt(null, row, column); } catch (NullPointerException e2) { // do nothing } } textField.setText(new Float(sum).toString()); } }); } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub TableModelEvent_2_Modified frame = new TableModelEvent_2_Modified(); frame.setTitle("自动计算表格某一数字列的和(2)"); frame.pack(); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }}

转载于:https://www.cnblogs.com/javaTest/archive/2012/07/12/2589141.html

你可能感兴趣的文章
ContentProvider
查看>>
欢迎来到Attention的博客
查看>>
获取IOS bundle中的文件
查看>>
document
查看>>
Hadoop下大矩阵乘法Version2
查看>>
iPhone内存溢出——黑白苹果
查看>>
Struts2学习笔记(十二) 类型转换(Type Conversion)(下)
查看>>
tcpdump学习
查看>>
局域网内传输文件速度慢
查看>>
Linux的核心版本(摘抄)
查看>>
CASE表达式
查看>>
zkw线段树
查看>>
作业1226
查看>>
mainline.js主线
查看>>
fseek()
查看>>
Python学习笔记——PyQt控件中文字居中显示
查看>>
JAVA环境下利用solrj二次开发SOlR搜索的环境部署常见错误
查看>>
Beta阶段敏捷冲刺前准备
查看>>
mini web框架-3-替换模板
查看>>
Siamese Network简介
查看>>