我有一个JTable,需要更改它的一些属性,例如它的突出显示颜色。
This website表示表格中有字段,例如“highlight”和“light”。
我无法在任何地方找到它们。当您创建JTable的实例时,智能感知中不会出现任何涉及“突出显示”或“亮”的内容。 (但是某些方法如table.setFont()会显示出来。)
我注意到table.setUI();
,但我不知道如何使用它,或者它是否与此有关。
我正在寻找的是当你将鼠标悬停在它上面时改变它的颜色,我不确定Highlight
是否会这样做,或者我是否必须走很长的路要走实现mouseListener。我仍然希望能够改变其他L& F设置。
答案 0 :(得分:1)
您可以通过在渲染JTable之前使用方法#put(String, String)
在UIManager(或UIDefaults)中引用一个或多个属性来实现目标。
此链接也可能对您有所帮助:http://www.java2s.com/Code/Java/Swing-JFC/ListUIPropertiesinaJTableandsortable.htm
希望它会有所帮助!
答案 1 :(得分:1)
有四种方式
1)覆盖UI
2)使用渲染器
3)为GUI提供更好更好的输出我建议更改Look and Feel或使用Nimbus Look and Feel或Synth Look and Feel
4)将所有a.m.选项放在一起并使用自定义绘画进行JViewPort,ScrollBar
答案 2 :(得分:1)
我不确定下面的代码是否有效,因为我从我的一个旧项目代码的某些块中抓取并修改了它,但你可以试试。
public class MyTable extends JTable implements MouseMotionListener {
int mouseHoverRow = -1;
public MyTable() {
addMouseMotionListener(this);
}
//codes
public Component prepareRenderer(TableCellRenderer renderer, int rowIndex,
int vColIndex) {
Component c = super.prepareRenderer(renderer, rowIndex, vColIndex);
Color back = getSelectionBackground();
int red = back.getRed();
int green = back.getGreen();
int blue = back.getBlue();
if (rowIndex == mouseHoverRow) {
c.setBackground(Color.LIGHT_GRAY);
} else {
c.setBackground(getBackground());
}
return c;
}
public void mouseMoved(MouseEvent e) {
Point p = new Point(e.getX(), e.getY());
mouseHoverRow = rowAtPoint(p);
}