SwingX組件有點問題。SwingX JXTable布爾列在高亮顯示時顏色不同
在我的應用程序中,我使用JXTable並在桌面上註冊了一個MouseOver ColorHighlighter。該表的模型定義了兩列;一個String列和一個布爾列。 JXTable中布爾列的默認渲染器是CheckBoxes。現在的問題是當鼠標在行上移動時,ColorHighlighter以不同顏色突出顯示列;布爾列較黑,然後是字符串列。 在示例中,您可以看到該行爲。
我希望所有列都以相同顏色突出顯示。
有沒有人有想法解決這個問題?
import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.table.DefaultTableModel;
import org.jdesktop.swingx.JXTable;
import org.jdesktop.swingx.decorator.ColorHighlighter;
import org.jdesktop.swingx.decorator.HighlightPredicate;
public class BooleanHighlighterDemo
{
public static void main(String args[])
{
JFrame frame = new JFrame("Boolean Highlighter");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JXTable table = new JXTable(new BooleanTableModel());
//Add ColorHighlighter
table.addHighlighter(new ColorHighlighter(HighlightPredicate.ROLLOVER_ROW,
new Color(0x330000ff, true), Color.BLACK));
frame.add(new JScrollPane(table), BorderLayout.CENTER);
frame.setSize(400, 150);
frame.setVisible(true);
}
}
class BooleanTableModel extends DefaultTableModel
{
public BooleanTableModel()
{
super(new Object[][]{ { "1", Boolean.TRUE }, { "2", Boolean.TRUE }, { "3", Boolean.FALSE },
{ "4", Boolean.TRUE }, { "5", Boolean.FALSE } }, new String[]{ "Number", "Boolean" });
}
@Override
public Class<?> getColumnClass(int columnIndex)
{
switch (columnIndex)
{
case 0:
return String.class;
case 1:
return Boolean.class;
default :
return Object.class;
}
}
}
我跑你的例子,我得到了兩列相同的顏色。 – jzd 2011-03-16 11:35:09
在評論之後,我查看了swingX 1.6.2的最新版本,在這個版本中,兩列的顏色都是一樣的。看來Bug已經修復了。謝謝 ! – Seffel 2011-03-16 14:08:34
我應該提到我使用了1.6.2,我將創建一個指定這個的答案。 – jzd 2011-03-16 14:13:21