如何在JTable中创建翻转效果? [英] How can to create a rollover effect in a JTable?

查看:130
本文介绍了如何在JTable中创建翻转效果?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的应用程序中,我想用JTable的行创建一个翻转效果。例如,当鼠标进入行时,该行的背景颜色将改变;相反,当鼠标退出该行时,该行的颜色将恢复正常。

In my application, I'd like to create a rollover effect with the rows of a JTable. For example, when the mouse enters the row, the background color of that row will change; conversely, the color of that row will return to normal when the mouse exits that row.

我该怎么做?

推荐答案

使用下面的代码,它将为您提供有关使用JTable行应用翻转效果的想法。

Use the below code, which will give you an idea about applying rollover effect with rows of a JTable.

import java.awt.Component;
import java.awt.event.MouseEvent;

import javax.swing.*;
import javax.swing.event.MouseInputAdapter;
import javax.swing.table.*;

public class RollOverTable extends JTable {

    private int rollOverRowIndex = -1;

    public RollOverTable(TableModel model) {
        super(model);
        RollOverListener lst = new RollOverListener();
        addMouseMotionListener(lst);
        addMouseListener(lst);
    }

    public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
        Component c = super.prepareRenderer(renderer, row, column);
        if( isRowSelected(row) || (row == rollOverRowIndex) ) {
            c.setForeground(getSelectionForeground());
            c.setBackground(getSelectionBackground());
        }
        else {
            c.setForeground(getForeground());
            c.setBackground(getBackground());
        }
        return c;
    }


    private class RollOverListener extends MouseInputAdapter {

        public void mouseExited(MouseEvent e) {
            rollOverRowIndex = -1;
            repaint();
        }

        public void mouseMoved(MouseEvent e) {
            int row = rowAtPoint(e.getPoint());
            if( row != rollOverRowIndex ) {
                rollOverRowIndex = row;
                repaint();
            }
        }
    }
}

这篇关于如何在JTable中创建翻转效果?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆