2011-09-08 16 views
7

JTreeTable var ve bir fare üzerinde hücrelerin her ne zaman bir araç ipucu göstermek için başarıyla bir MouseMotionListener uyguladık. Ancak hücreye tıkladığınızda araç ipucu görünmez. mouseClicked ve mouseReleased olayları üzerinde metin ayarlama gibi pek çok şey denedim, ancak bu çalışmaz. Bu kodu bulundu -Fare üzerinde araç ipucu nasıl görüntülenir

Action toolTipAction = treeTable.getActionMap().get("postTip"); 

if(toolTipAction != null){ 

    ActionEvent postTip = new ActionEvent(treeTable,ActionEvent.ACTION_PERFORMED, ""); 
    toolTipAction.actionPerformed(postTip);  
} 

tooltip popup yaratıyor mouseReleased yöntemde, kullanmak, ama yanlış pozisyonda ardından bu. Sonraüzerinde getTooltipLocation yöntemini geçersiz kılmayı denedim ve bu mouseMoved olayları için iyi çalışıyor, ancak yukarıdaki yöntemle çağrılmadı. Bunu yapmak için kim biraz ışık tutabilir?

Teşekkür Andy

cevap

0

org.apache.jorphan.gui.JTreeTable javax.swing.JComponent javax.swing.JComponent # setToopTipText() çalışmıyor uzanır? Eylem'i kullanmak istediğini, ancak araç ipuçlarını öğrenmek istediğimin farkındayım? Birden çok UI eyleminin paylaşması gerektiğinde bunu kullanırdım.

11

Araç ipucunu göstermek için aşağıdaki yaklaşımı kullanabilirsiniz (biraz gecikme olacak).

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class ToolTipOnRelease extends JPanel 
{ 
    public ToolTipOnRelease() 
    { 
     JLabel label = new JLabel("First Name:"); 
     add(label); 

     JTextField textField = new JTextField(15); 
     add(textField); 

     MouseListener ml = new MouseAdapter() 
     { 
      public void mouseReleased(MouseEvent e) 
      { 
       JComponent component = (JComponent)e.getSource(); 
       component.setToolTipText("Mouse released on: " + component.getClass().toString()); 

       MouseEvent phantom = new MouseEvent(
        component, 
        MouseEvent.MOUSE_MOVED, 
        System.currentTimeMillis(), 
        0, 
        0, 
        0, 
        0, 
        false); 

       ToolTipManager.sharedInstance().mouseMoved(phantom); 
      } 
     }; 

     label.addMouseListener(ml); 
     textField.addMouseListener(ml); 
    } 

    private static void createAndShowUI() 
    { 
     JFrame frame = new JFrame("ToolTipOnRelease"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.add(new ToolTipOnRelease()); 
     frame.pack(); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) 
    { 
     EventQueue.invokeLater(new Runnable() 
     { 
      public void run() 
      { 
       createAndShowUI(); 
      } 
     }); 
    } 
} 
+0

mükemmel, o zaman cevabı "kabul" isteyebilirsiniz – user935339

+4

user935339 @ iyiyim teşekkür çalışır: O zaman bir MouseEvent şimdi oluşturulur beri getToolTipLocation() yöntemini geçersiz kılabilir. – camickr