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

自定义jtable单元格编辑器

 
阅读更多
jtable每行每列的单元格的编辑器都可以自定义,
方法如下:
继承 DefaultCellEditor
然后重新
public Component getTableCellEditorComponent(JTable table, Object value,
			boolean isSelected, int row, int column)
{
    指定用什么控件作为编辑器,并且在这初始化控件的值,可以根据row和column指定每个单元格的编辑器,row和column都是该单元格在jtable对应的model的行列
    value是单元格对应的数据model的值,
    这里要把使用的控件保持成全局变量,以便在getCellEditorValue获取值。
}


public Object getCellEditorValue()
{
   编辑结束后调用这个方法,返回结果,一般是直接返回控件的值
}



最后
table.setDefaultEditor(Object.class, new MyCellEditor());

例子
public class PosParamCellEditor extends DefaultCellEditor 
{
	protected PosParam posParam;
	
	public PosParamCellEditor()
	{
		super(new JTextField());
		posParam = null;
	}
	
	public PosParamCellEditor(JComboBox box)
	{
		super(box);
		posParam = null;
	}
	
	public PosParamCellEditor(JCheckBox chb)
	{
		super(chb);
		posParam = null;
	}
	
	public PosParamCellEditor(JTextField txt)
	{
		super(txt);
		posParam = null;
	}



	@Override
	public Component getTableCellEditorComponent(JTable table, Object value,
			boolean isSelected, int row, int column)
	{
		// TODO 当单元格处于编辑状态时 
		if(column == 1)
		{
			PosParamModel model = (PosParamModel)table.getModel();
			posParam = model.getPosParam(row);
			posParam.setValue(value);
			posParam.getComponent().setOpaque(true);   
		//	posParam.getComponent().setBackground(isSelected ? table.getSelectionBackground() : new Color(255,255,200));   
		//	posParam.getComponent().setForeground(isSelected ? table.getSelectionForeground() : table.getForeground()); 
			return posParam.getComponent();
		}
		posParam = null;
		return super.getTableCellEditorComponent(table, value, isSelected, row, column);
	}



	@Override
	public Object getCellEditorValue()
	{
		if(this.posParam == null) return super.getCellEditorValue();
		return posParam.getValue();
	}
	
	
	
	
	
}



分享到:
评论

相关推荐

    JTable 操作单元格 行 列

    5. **单元格编辑**:`JTable`支持单元格编辑,默认使用`DefaultCellEditor`。可以通过设置自定义的`CellEditor`来控制何时开始和结束编辑,以及处理编辑后的结果。 ### 行操作 1. **添加行**:使用`...

    Jtable 中放入多个按钮

    首先,`JTable`默认的渲染器和编辑器无法直接支持在单元格内放置多个组件,如按钮。因此,我们需要创建一个自定义的`TableCellRenderer`来实现这个功能。一个简单的实现方式是创建一个`JPanel`,并在其中添加多个`...

    JTable使用自定义数据类型示例工程

    接下来,你需要在`JTable`中应用这些自定义的渲染器和编辑器。这可以通过创建一个`DefaultTableModel`,然后设置列的渲染器和编辑器来完成: ```java DefaultTableModel model = new DefaultTableModel(); // 添加...

    有JTABLE控件的自定义COMBOBOX

    自定义ComboBox的核心在于扩展DefaultCellEditor类,这是JTable中的单元格编辑器。我们需要重写createTableCellEditorComponent方法,以返回一个包含JTable的ComboBox。在这个JTable中,我们可以设置多列数据,甚至...

    Java Swing中JTable渲染器与编辑器用法示例

    Java Swing中JTable渲染器与编辑器用法示例 Java Swing中JTable渲染器与编辑器用法示例是Java Swing中一个重要的组件,主要用于显示和编辑表格数据。在Java Swing中,JTable是最基本的表格组件,渲染器和编辑器是...

    复杂JTable-跨列表头

    3. **TableHeaderRenderer**: 这是自定义的表头单元格渲染器,用于控制合并列头的显示样式,比如字体、颜色、背景等。在Swing中,每个组件的显示都依赖于其对应的渲染器。 4. **GroupableTableHeaderTest.java**: ...

    JTable实例大全

    `JTable`默认提供了一些基本的单元格编辑器和渲染器,如文本、复选框等。但为了实现更复杂的需求,如日期选择、颜色选择等,你需要自定义`TableCellEditor`和`TableCellRenderer`。 6. **排序和过滤**: `JTable`...

    JTable添加CheckBox

    在Java Swing中,`JTable` 是用于展示二维数据的组件,它允许用户查看和编辑数据。本示例探讨如何在`JTable`中添加`CheckBox`,并实现表头的`JCheckBox`全选联动功能。这在需要用户进行多选操作的界面中非常常见,...

    jtable-弄了我一整天

    4. **单元格编辑**:JTable支持各种类型的单元格编辑器,如文本框、复选框等。 5. **渲染**:单元格的显示方式可以自定义,通过TableCellRenderer实现。 6. **事件处理**:监听单元格的编辑、表格的选择变化和模型...

    在table中添加jcombox

    为指定列设置`JComboBox`作为单元格编辑器: ```java DefaultCellEditor editor = new DefaultCellEditor(comboBox); model.setColumnEditable(0, true); // 假设我们想在第一列使用JComboBox table.getColumnModel...

    用Java制作属性编辑器

    第二列则展示和编辑属性值,根据属性类型的不同,编辑器可以是文本框、下拉框、组合框或是自定义的对话框。当属性值发生变化时,编辑器需要能够通知到关联的对象。 为了实现这一功能,开发者需要创建一个`...

    JTable的初步编程

    你还可以自定义单元格渲染器和编辑器,以实现特定的数据显示和编辑行为。 在`TestJTable_Upupsky`项目中,可能包含了演示`JTable`基本用法的示例代码。通过阅读和运行这些代码,你可以更深入地理解`JTable`的工作...

    javaJtable经典列设置+表格颜色参考.pdf

    这个例子提供了一个基础的JTable实现,可以进一步扩展以适应实际应用,例如添加事件监听器处理用户交互,或者使用自定义的单元格渲染器根据业务逻辑动态改变行的颜色。在邮件程序中,这种动态颜色变化可能是根据邮件...

    Swing中JTABLE中添加JBUTTON控件

    3. **将自定义渲染器和编辑器应用到`JTable`**:在创建`JTable`实例后,我们可以通过`getColumnClass`和`setCellRenderer`、`setCellEditor`方法将我们的自定义组件关联到特定列。 ```java JTable table = new ...

    学会JTable的使用

    - **定制外观**:可以自定义单元格渲染器和编辑器,以实现特定的显示效果或输入验证。 - **表格编辑**:默认情况下,某些类型的单元格是可编辑的。你可以控制哪些单元格可以编辑,以及编辑时的行为。 ### 五、实际...

    dialogcelleditor_focusLost.rar

    `Snippet033CellEditorPerRowPre33.java`可能是实现这一功能的一个代码片段,展示了如何为表格的每一行创建一个自定义的单元格编辑器。在Swing的JTable组件中,单元格编辑通常通过实现`javax.swing.CellEditor`接口...

    JAVA中JTable的使用方法

    还可以自定义单元格渲染器和编辑器。 7. **表头操作** 使用`getTableHeader()`获取表头组件,可调整列宽或自定义表头渲染器。 8. **功能增强** `JTable`提供了多选模式,通过`setRowSelectionAllowed()`和`...

    jTable的使用

    2. **渲染与编辑器**:可以使用`TableCellRenderer`和`TableCellEditor`来定制单元格的显示和编辑方式,例如添加颜色、图标或者下拉列表。 3. **分页与数据加载**:对于大量数据,可以实现分页加载,仅加载当前视图...

    netbeans jtable 复杂表头的实现方法

    默认情况下,`JTableHeader`中的每个单元格都显示一个列的标题,但我们可以通过自定义渲染器来改变这个行为。 1. **自定义表头渲染器**: 要创建复杂表头,我们需要扩展`DefaultTableCellRenderer`类,并覆盖`...

    JTable示例

    `JTable`默认支持单元格编辑。`isCellEditable(int row, int column)`决定一个单元格是否可编辑。你可以通过添加`TableCellEditor`和`TableCellRenderer`来自定义单元格的显示和编辑行为。同时,可以注册`...

Global site tag (gtag.js) - Google Analytics