0 0

swing jtable 行选择时加色同时鼠标滑过行时行也加色如果实现?0

swing jtable 行选择是加色并且鼠标滑过行时也加色如果实现?

Jtable默认已经实现了行选择加色,但我现实了鼠标滑过是时行也加色后,选择行加色就失效了,两者只能实现其一,如何才能实现选择行时加色,同时鼠标滑过行时行也加色呢,谢谢!
2012年7月05日 22:50

1个答案 按时间排序 按投票排序

0 0

给你敲了一段,感动吧

import java.awt.Color;
import java.awt.Component;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;

/**
 * TableDemo is just like SimpleTableDemo, except that it uses a custom
 * TableModel.
 */

class MyTable extends JTable implements MouseMotionListener{

	private int mouseOnRowIndex = -1;

	public MyTable() {
		
		this.setModel(new MyTableModel());
		
		this.addMouseMotionListener(this);

		this.setDefaultRenderer(Object.class, new MyTableCellRenderer());
	}

	public void setMouseOnRowIndex(int mouseOnRowIndex) {
		this.mouseOnRowIndex = mouseOnRowIndex;
	}

	class MyTableCellRenderer extends DefaultTableCellRenderer{
		@Override
		public Component getTableCellRendererComponent(JTable table,
				Object value, boolean isSelected, boolean hasFocus,
				int row, int column) {
			if(row == MyTable.this.mouseOnRowIndex){
				setBackground(Color.YELLOW);
			}else{
				setBackground(null);
			}
			return super.getTableCellRendererComponent(table, value, isSelected, hasFocus,
					row, column);
		}
	}
	
	class MyTableModel extends AbstractTableModel {
		@Override
		public int getRowCount() {
			return 3;
		}
		@Override
		public int getColumnCount() {
			return 3;
		}
		@Override
		public Object getValueAt(int rowIndex, int columnIndex) {
			return rowIndex + " - " + columnIndex;
		}
		
	}

	@Override
	public void mouseDragged(MouseEvent e) {}

	@Override
	public void mouseMoved(MouseEvent e) {
		MyTable table = (MyTable) e.getComponent();
		Point point = e.getPoint();
		int rowAtPoint = table.rowAtPoint(point);
		System.out.println(rowAtPoint);
		table.setMouseOnRowIndex(rowAtPoint);
		table.updateUI();
	}
	
	public static void main(String[] args) {
		JFrame frame = new JFrame();
		frame.add(new MyTable());
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
		frame.pack();
		frame.setVisible(true);
	}
}

2012年7月06日 05:12

相关推荐

    JTable实现行间拖拽的最简单方法

    在Java Swing应用中,`JTable`是一种常用的组件,用于展示和操作二维数据。它提供了丰富的功能,如排序、选择和编辑。然而,`JTable`默认并不支持行间的拖放(Drag and Drop, DnD)操作。本文将详细介绍如何通过一种...

    Java Swing JTable分页

    ### Java Swing JTable 分页实现详解 #### 一、引言 在开发基于Java Swing的应用程序时,我们经常需要处理大量的数据展示问题。对于表格形式的数据展示,`JTable`是一个非常常用且强大的组件。然而,当数据量过大时...

    JTable 拖动行 移动行

    JTable 拖动行 移动行的ui,直接 table.setUI(new DragDropRowTableUI()); 调用

    Swing JTable组件设置单元格合并

    Swing JTable组件设置单元格合并,内置Test测试类,核心API GridBagTable tasktable = new GridBagTable(model); tasktable.mergeCells(startRow, endRow, 0, 0);

    java Swing Jtable 下拉动态加载数据

    JTable实现下拉动态加载数据,滑动动态加载数据,纯原生态java。

    Java Swing实现JTable检测单元格数据变更事件的方法示例

    Java Swing 实现 JTable 检测单元格数据变更事件的方法示例 Java Swing 中的 JTable 是一个功能强大且灵活的表格组件,广泛应用于各种桌面应用程序中。然而,在实际开发中,我们经常需要检测单元格数据的变更事件...

    Swing之JTable的详细介绍

    JTable能够方便地创建和管理表格数据,同时也支持用户交互,如编辑单元格、排序、选择行等操作。下面我们将深入探讨JTable的使用方法和特性。 首先,JTable的类继承结构如下: 1. `java.lang.Object` 2. `java.awt...

    swing Jtable使用checkbox

    swing Jtable使用checkboxswing Jtable使用checkboxswing Jtable使用checkboxswing Jtable使用checkboxswing Jtable使用checkboxswing Jtable使用checkboxswing Jtable使用checkboxswing Jtable使用checkboxswing ...

    jtable选中需要修改的行

    当我们需要在JTable中实现用户交互,比如选中某一行并进行编辑时,通常会涉及到几个关键概念和技术。以下是对这些知识点的详细解释: 1. **JTable的创建与基本用法**:JTable是javax.swing.JTable类的实例,它基于...

    Swing之JTable详解

    ### Swing之JTable详解 #### 类层次结构图 在Swing框架中,`JTable`是构建GUI应用程序中表格的主要组件。它继承自`JComponent`类,这使得`JTable`能够支持丰富的图形用户界面功能。下面展示了`JTable`的类层次结构...

    Java Swing高级空件JTable的用法

    Java Swing高级空件JTable的用法 Java Swing中的JTable组件是用于显示和编辑数据的表格控件。它是Swing中最复杂和强大的组件之一,具有许多高级功能和灵活的配置选项。下面将详细介绍JTable的用法和相关知识点。 1...

    Swing JTable 常用属性

    Swing JTable 常用属性详解 Swing JTable 是 Java 中一个常用的表格控件,用于显示和编辑表格数据。在实际开发中,经常需要对 JTable 进行各种设置和操作,这篇文章将详细介绍 JTable 的常用属性和方法。 一、创建...

    java swing 导出Jtable里面的数据到excel

    java swing 导出Jtable里面的数据到excel,不用拷贝代码,直接粘贴代码

    Swing之JTable用法

    Swing之JTable用法

    Swing之JTable+JComboBox的详细介绍[zone yan]

    在Java的Swing库中,`JTable`和`JComboBox`是两个非常重要的组件,它们常被用于创建用户界面,展示数据并提供交互性。`JTable`用于展示二维表格数据,而`JComboBox`则是一种下拉选择框,可以提供多个选项供用户选择...

    Swing中JTABLE中添加JBUTTON控件

    在Java的Swing库中,`JTable`是用于创建数据网格视图的重要组件,它允许用户以表格的形式查看和操作数据。而`JButton`则是一个常用的按钮控件,通常用于触发某些动作或事件。将`JButton`添加到`JTable`中可以为用户...

    复杂JTable(复杂表头、跨行列表体)

    在Java Swing库中,`JTable`是一个非常重要的组件,用于展示二维数据集,通常用于创建用户界面中的表格。在一些复杂的应用场景中,我们可能需要实现更高级的功能,如复杂的表头和跨行列表体。这个主题主要关注如何...

    Swing下滚动条实现仿分页

    JTable可以与TableModel配合,使数据动态更新,同时支持排序、选择和编辑等功能。在“仿分页”实现中,JTable可能被用来显示数据集的一个“页面”,当用户滚动滚动条时,JTable会显示数据集的下一“页面”。 ...

    JTable示例源码(Swing demo)

    在这个`JTable`示例源码中,我们将会深入探讨如何使用`TableModel`,以及在处理`JTable`事件时如何获取当前选中的行和其他相关数据。 首先,`TableModel`是`JTable`的核心,它定义了表格数据的结构和行为。自定义`...

Global site tag (gtag.js) - Google Analytics