Как изменить тип курсора - PullRequest
4 голосов
/ 29 марта 2010

Этот вопрос относится к предыдущему посту. Как сохранить файл и прочитать

альтернативный текст http://freeimagehosting.net/image.php?dc73c3bb33.jpg

Как изменить курсор на «Рука», только если указатель мыши указывает на сетку, которая не является нулевой (содержащиеся изображения)?

Пока курсор поворачивается к «Руке» по всей сетке (ноль или не ноль).

public GUI() {
....
  JPanel pDraw = new JPanel();
  ....
  for(Component component: pDraw.getComponents()){
     JLabel lbl = (JLabel)component;

     //add mouse listener to grid box which contained image
     if (lbl.getIcon() != null)
        lbl.addMouseListener(this);
  }

  public void mouseEntered(MouseEvent e) {
     Cursor cursor = Cursor.getDefaultCursor();
     //change cursor appearance to HAND_CURSOR when the mouse pointed on images
     cursor = Cursor.getPredefinedCursor(Cursor.HAND_CURSOR); 
     setCursor(cursor);
  }

Ответы [ 2 ]

5 голосов
/ 29 марта 2010

Это должно иметь желаемый эффект:

public GUI() {
  // class attributes
  protected Component entered = null;
  protected Border    defaultB    = BorderFactory...;
  protected Border    highlighted = BorderFactory...;

  ....
  JPanel pDraw = new JPanel();
  ....
  for(Component component: pDraw.getComponents()){
     JLabel lbl = (JLabel)component;

     //add mouse listener to grid box which contained image
     if (lbl.getIcon() != null)
        lbl.addMouseListener(this);
  }

  public void mouseEntered(MouseEvent e) {
     if (!(e.getSource() instanceof Component)) return;
     exit();
     enter((Component)e.getSource());
  }

  public void mouseExited(MouseEvent e) {
     exit();
  }

  public void enter(Component c) {
     //change cursor appearance to HAND_CURSOR when the mouse pointed on images
     Cursor cursor = Cursor.getPredefinedCursor(Cursor.HAND_CURSOR); 
     setCursor(cursor);
     c.setBorder(highlighted);
     entered = c;
  }

  public void exit() {
     Cursor cursor = Cursor.getDefaultCursor();
     setCursor(cursor);
     if (entered != null) {
        entered.setBorder(defaultB);
        entered = null;
     }
  }

Отредактированный пост для нового материала в комментарии. Javadoc BorderFactory: http://java.sun.com/javase/6/docs/api/javax/swing/BorderFactory.html. Редактировать 2: исправлена ​​небольшая проблема.

3 голосов
/ 25 ноября 2012

Вот один из способов изменить курсор в определенном столбце в JTable:

if(tblExamHistoryAll.columnAtPoint(evt.getPoint()) == 5)
{
     setCursor(Cursor.HAND_CURSOR);
}
else
{
     setCursor(0);
}
...