我对 SwingX 组件有一个小问题。
\n\n在我的应用程序中,我使用 JXTable 并在桌子上注册了 MouseOver ColorHighlighter。表的模型定义了两列;一个字符串列和一个布尔列。JXTable 中布尔列的默认呈现器是复选框。现在的问题是,当鼠标在行上移动时,ColorHighlighter 以不同的颜色突出显示列;布尔列比字符串列更暗。\n在示例中您可以看到该行为。
\n\n我希望所有列都以相同的颜色突出显示。
\n\n有人有解决问题的想法吗?
\n\n
\n\nimport 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