2010-03-28 7 views
4

Cette question est liée à l'article précédent. How to save file and readComment changer le type de curseur

alt text http://freeimagehosting.net/image.php?dc73c3bb33.jpg

Comment puis-je changer le curseur sur « main » uniquement lorsque la souris pointé sur la grille qui est non nul (contenait des images)? Jusqu'à présent, le curseur se transforme en "Hand" sur toutes les grilles (null ou null).

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); 
    } 

Répondre

5

Cela devrait avoir l'effet désiré:

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; 
    } 
    } 

poste Edité pour les nouvelles fonctionnalités dans le commentaire. Javadoc BorderFactory: http://java.sun.com/javase/6/docs/api/javax/swing/BorderFactory.html. Edit 2: petit problème fixe.

+0

Merci beaucoup Chris ... – Jessy

+0

Je pensais ajouter fort effet sur la « frontière d'image », si bien que que l'effet est plus visible. Comment puis je faire ça? – Jessy

+0

Découvrez la publication mise à jour :) Vous pouvez modifier le contenu de votre coeur avec le code donné. –

3

Voici une façon de changer le curseur à une colonne particulière dans JTable:

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