5

SwingXコンポーネントに少し問題があります。

私のアプリケーションではJXTableを使用しており、テーブルではMouseOverColorHighlighterを登録しています。テーブルのモデルは2つの列を定義します。文字列列とブール列。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;
    }
  }
}

4

2 に答える 2

2

最新バージョン (SwingX 1.6.2) でプログラムを実行します。両方の列で同じ色が表示されます。

于 2011-03-16T14:12:51.667 に答える
1

アルファを削除すると、ハイライトの色は両方の列で同じになります。

于 2011-03-16T12:13:55.313 に答える