⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testdefaulttablemodel.java

📁 疯狂Java讲义_源码(含Java设计模式CHM
💻 JAVA
字号:

import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.text.*;
import javax.swing.*;
import javax.swing.table.*;
/**
 * Description:
 * <br/>Copyright (C), 2005-2008, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author  Yeeku.H.Lee kongyeeku@163.com
 * @version  1.0
 */
public class TestDefaultTableModel
{
	JFrame mainWin = new JFrame("管理数据行、数据列");
	final int COLUMN_COUNT = 5;
	DefaultTableModel model;
	JTable table;
	//用于保存被隐藏列的List集合
	ArrayList<TableColumn> hiddenColumns = new ArrayList<TableColumn>();
	public void init()
	{
		model = new DefaultTableModel(COLUMN_COUNT ,COLUMN_COUNT);
		for (int i = 0; i < COLUMN_COUNT ; i++ )
		{
			for (int j = 0; j < COLUMN_COUNT ; j++ )
			{
				model.setValueAt("老单元格值 " + i + " " + j , i , j);
			}
		}

		table = new JTable(model);

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

		//为窗口安装菜单
		JMenuBar menuBar = new JMenuBar();
		mainWin.setJMenuBar(menuBar);
		JMenu tableMenu = new JMenu("管理");
		menuBar.add(tableMenu);

		JMenuItem hideColumnsItem = new JMenuItem("隐藏选中列");
		hideColumnsItem.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent event)
			{
				//获取所有选中列的索引
				int[] selected = table.getSelectedColumns();
				TableColumnModel columnModel = table.getColumnModel();
				//依次把每一个选中的列隐藏起来,并使用List把这些列保存起来
				for (int i = selected.length - 1; i >= 0; i--)
				{
					TableColumn column = columnModel.getColumn(selected[i]);
					table.removeColumn(column);
					//把隐藏的列保存起来,确保以后可以显示出来
					hiddenColumns.add(column);
				}
			}
		});
		tableMenu.add(hideColumnsItem);

		JMenuItem showColumnsItem = new JMenuItem("显示隐藏列");
		showColumnsItem.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent event)
			{
				//把所有隐藏列依次显示出来
				for (TableColumn tc : hiddenColumns)
				{
					//依次把所有隐藏的列显示出来
					table.addColumn(tc);
				}
				//清空保存隐藏列的List集合
				hiddenColumns.clear();            
			}
		});
		tableMenu.add(showColumnsItem);

		JMenuItem addColumnItem = new JMenuItem("插入选中列");
		addColumnItem.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent event)
			{
				//获取所有选中列的索引
				int[] selected = table.getSelectedColumns();
				TableColumnModel columnModel = table.getColumnModel();
				//依次把选中的列添加到JTable之后
				for (int i = selected.length - 1; i >= 0; i--)
				{  
					TableColumn column = columnModel.getColumn(selected[i]);
					table.addColumn(column);
				}
			}
		});
		tableMenu.add(addColumnItem);

		JMenuItem addRowItem = new JMenuItem("增加行");
		addRowItem.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent event)
			{
				//创建一个String数组作为新增行的内容
				String[] newCells = new String[COLUMN_COUNT];
				for (int i = 0; i < newCells.length; i++)
				{
					newCells[i] = "新单元格值 " + model.getRowCount() + " " + i;
				}
				//向TableModel中新增一行。
				model.addRow(newCells);
			}
		});
		tableMenu.add(addRowItem);

		JMenuItem removeRowsItem = new  JMenuItem("删除选中行");
		removeRowsItem.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent event)
			{
				//获取所有选中行
				int[] selected = table.getSelectedRows();
				//依次删除所有选中行
				for (int i = selected.length - 1; i >= 0; i--)
				{
					model.removeRow(selected[i]);
				}
			}
		});
		tableMenu.add(removeRowsItem);

		mainWin.pack();
		mainWin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mainWin.setVisible(true);
	}

	public static void main(String[] args) 
	{
		new TestDefaultTableModel().init();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -