在我的应用程序中,我想使用 JTable 的行创建翻转效果。例如,当鼠标进入该行时,该行的背景颜色会发生变化;反之,当鼠标退出该行时,该行的颜色将恢复正常。
我怎样才能做到这一点?
使用下面的代码,它将让您了解如何对 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();
}
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)