SwingX JXTable 布尔列在突出显示时具有不同的颜色

Sef*_*fel 5 java swing swingx

我对 SwingX 组件有一个小问题。

\n\n

在我的应用程序中,我使用 JXTable 并在桌子上注册了 MouseOver ColorHighlighter。表的模型定义了两列;一个字符串列和一个布尔列。JXTable 中布尔列的默认呈现器是复选框。现在的问题是,当鼠标在行上移动时,ColorHighlighter 以不同的颜色突出显示列;布尔列比字符串列更暗。\n在示例中您可以看到该行为。

\n\n

我希望所有列都以相同的颜色突出显示。

\n\n

有人有解决问题的想法吗?

\n\n
\n\n

\n\n
\n\n

\n\n
import java.awt.BorderLayout;\nimport java.awt.Color;\n\nimport javax.swing.JFrame;\nimport javax.swing.JScrollPane;\nimport javax.swing.table.DefaultTableModel;\n\nimport org.jdesktop.swingx.JXTable;\nimport org.jdesktop.swingx.decorator.ColorHighlighter;\nimport org.jdesktop.swingx.decorator.HighlightPredicate;\n\n\npublic class BooleanHighlighterDemo\n{\n  public static void main( String args[] )\n  {\n    JFrame frame = new JFrame( "Boolean Highlighter" );\n    frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );\n\n    JXTable table = new JXTable( new BooleanTableModel() );\n\n    //Add ColorHighlighter\n    table.addHighlighter( new ColorHighlighter( HighlightPredicate.ROLLOVER_ROW,\n        new Color( 0x330000ff, true ), Color.BLACK ) );\n\n    frame.add( new JScrollPane( table ), BorderLayout.CENTER );\n    frame.setSize( 400, 150 );\n    frame.setVisible( true );\n  }\n}\n\nclass BooleanTableModel extends DefaultTableModel\n{\n  public BooleanTableModel()\n  {\n    super( new Object[][]{ { "1", Boolean.TRUE }, { "2", Boolean.TRUE }, { "3", Boolean.FALSE },\n        { "4", Boolean.TRUE }, { "5", Boolean.FALSE } }, new String[]{ "Number", "Boolean" } );\n  }\n\n  @Override\n  public Class<?> getColumnClass( int columnIndex )\n  {\n    switch ( columnIndex )\n    {\n      case 0:\n        return String.class;\n\n      case 1:\n        return Boolean.class;\n\n      default :\n        return Object.class;\n    }\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

\n