• 追加された行はこの色です。
  • 削除された行はこの色です。
TITLE:JListのセルをマウスカーソルでロールオーバー
#navi(../)
*JListのセルをカーソル移動でロールオーバー [#q7f9d22f]
>編集者:[[Terai Atsuhiro>terai]]~
作成日:2006-09-11~
更新日:&lastmod;

#contents

**概要 [#mfd31fa5]
JListでマウスカーソルの下にあるセルをロールオーバーします。
JListでマウスカーソルの下にあるセルをハイライト表示します。

#screenshot

**サンプルコード [#g4cfa246]
 class RollOverList extends JList {
   private int rollOverRowIndex = -1;
   public RollOverList() {
     super();
     RollOverListener rol = new RollOverListener();
     addMouseMotionListener(rol);
     addMouseListener(rol);
     setCellRenderer(new RollOverCellRenderer());
   }
   private class RollOverCellRenderer extends DefaultListCellRenderer{
     public Component getListCellRendererComponent(JList list, Object value,
                            int index, boolean isSelected, boolean cellHasFocus) {
       Component c = super.getListCellRendererComponent(list, value, index,
                                                        isSelected, cellHasFocus);
       if(index == rollOverRowIndex) {
         c.setBackground(new Color(220,240,255));
         if(isSelected) c.setForeground(Color.black);
       }
       return c;
     }
   }
   private class RollOverListener extends MouseInputAdapter {
     public void mouseExited(MouseEvent e) {
       rollOverRowIndex = -1;
       repaint();
     }
     public void mouseMoved(MouseEvent e) {
       int row = locationToIndex(e.getPoint());
       if(row != rollOverRowIndex) {
         rollOverRowIndex = row;
         repaint();
       }
     }
   }
 }

-&jnlp;
-&jar;
-&zip;

**解説 [#bbe45ca3]
MouseInputAdapterをオーバーライドして、マウスカーソルのあるセルを記憶し、JListをリペイントしてそのセルの背景色などを変更しています。

**参考リンク [#z49e85b1]
-[[Java Technology Forums - Highlight JTable rows on rollover>http://forum.java.sun.com/thread.jspa?forumID=57&threadID=640414]]

**コメント [#c980eab8]
#comment