У меня небольшая проблема с компонентами SwingX.
В моем приложении я использую таблицу JXTable, и на столе я регистрирую MouseOver ColorHighlighter.Модель таблицы определяет два столбца;столбец String и логический столбец.По умолчанию средства визуализации логического столбца в JXTable являются CheckBoxes.Теперь проблема в том, что когда мышь перемещается по строкам, ColorHighlighter выделяет столбцы разными цветами;столбец Boolean темнее столбца String.В Примере вы можете увидеть поведение.
Я хочу, чтобы все столбцы были выделены одинаковым цветом.
У кого-нибудь есть идея решить проблему?
</p>
<pre><code>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;
}
}
}