`
yaoweinan
  • 浏览: 142085 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

JTable 使用简要说明

    博客分类:
  • awt
 
阅读更多

JTable  是swing 包中提供显示二维表的控件,一般被包裹在一个JScrollPanel 里面显示数据。

 

DefaultTableModel 是 TableModel 的一个实现,用来操作JTable 的数据和一些属性。

譬如 修改数据时候获取到JTable 的TableModel 进行数据的删除、增加、修改,完成之后调用JTable 的invalidate 方法来更新布局,显示数据。

下面这段代码使用TableModel 实现JTable中第一列可以编辑,其他不可以编辑,其他一些设置也可以在此中重写代码实现自己需要的功能。

DefaultTableModel defaultmodel=new DefaultTableModel(0, 4){

			@Override
			public boolean isCellEditable(int row, int column) {
				if(column==0){
					return true;
				}else{
					return false;
				}
			}
			
			
		};
		
		searchedGrid =new JTable(defaultmodel) ;
 

新建好JTable之后我们就可以对它的一些列做一些设置,如下

TableColumnModel columnModel = searchedGrid.getColumnModel();
		
		TableColumn column0 = columnModel.getColumn(0);//设置第一列
		column0.setHeaderValue("");
		column0.setMaxWidth(30);
		column0.setMinWidth(30);
		column0.setResizable(false);
		column0.setCellRenderer(new  JCheckBoxRender());//设置渲染效果
		column0.setCellEditor(new DefaultCellEditor(new JCheckBoxRender()));//设置编辑效果,
这里最好和Renderer是相同,负责会出现一点怪毛病

 JCheckBoxRender.java

 

public  class JCheckBoxRender extends JCheckBox implements TableCellRenderer
	{
		private static final Border noFocusBorder = new EmptyBorder(1, 1, 1, 1);

		public JCheckBoxRender()
		{
			super();
			setHorizontalAlignment(SwingConstants.CENTER);
			setBorderPainted(true);
		}

		@Override
		public Component getTableCellRendererComponent(final JTable table, final Object value,
			final boolean isSelected, final boolean hasFocus, final int row, final int column)
		{
			setBackground(table.getBackground());

			if (hasFocus)
			{
				setBorder(UIManager.getBorder("Table.focusCellHighlightBorder"));
			}
			else
			{
				setBorder(noFocusBorder);
			}
			if(column==0){
				if(value instanceof Boolean){
					setSelected((Boolean)value);
				}
			}
			return this;
		}
	}

 当然我们也可以如下做出隔行颜色不一样的Table。

searchedGrid.setDefaultRenderer(Object.class,
				new DefaultTableCellRenderer() {
			
			@Override
			public Component getTableCellRendererComponent(JTable table, Object value,
					boolean isSelected, boolean hasFocus, int row, int column) {
				setBackground(row%2==0?Color.red:Color.green);
				return super.getTableCellRendererComponent(table, value,
		                isSelected, hasFocus, row, column);
			}
		});
 

此外,在各位仁兄在删除数据时候,尽量从后往前删除,避免错误(这个问题是由于不管是Vector还是List 删除元素是index会发生变化,导致索引失效,一般采用一直删除第一个或者反向删除)

分享到:
评论

相关推荐

    GroupTableHeader 多表头 修正版

    - `readMe.txt`:通常包含关于压缩包内容的简要说明或使用指南,可能包括如何应用这些修改以及注意事项。 总的来说,"GroupTableHeader 修正版"提供了一个优化的多级表头解决方案,使得在Java Swing应用中创建和...

    基于Java C/S模式的简单学生管理系统

    8. **主要类说明.txt**:这个文件可能包含了对系统主要类的功能和用法的简要说明,帮助用户更好地理解和使用系统。 通过这个项目,学习者可以了解如何使用Java进行C/S应用开发,包括网络通信、数据库操作、用户界面...

    数据库课程设计---工资管理系统(程序+源码+文档)

    最后,`Readme.txt`文件通常包含项目的简要说明和使用指南,可能包括如何运行程序、安装依赖、数据库导入方法等内容。而`数据库课程设计 分析`可能是一个详细的项目分析文档,涵盖了需求分析、系统设计、实施步骤和...

    GUI.rar_java的readme例子

    "Java的readme例子"标签暗示了这个压缩包可能包含了一个README文件,该文件通常会提供关于项目的基本信息、如何运行程序以及相关知识点的简要说明。 在Java编程中,GUI是用于构建用户交互界面的重要工具,它允许...

    1108.swing证券小项目.zip

    1. **功能说明.txt** - 这个文件可能详细列出了项目中的各个功能模块,例如股票搜索、行情查看、交易下单、个人账户管理等,并对每个功能进行了简要的解释。它可能还涵盖了系统如何与数据库或其他外部服务进行交互的...

Global site tag (gtag.js) - Google Analytics