2011-04-20 31 views
8

Farenin sağ tuşunu kullanarak basıp sürükleyebileceğiniz bir uygulama var (aynı zamanda farklı bir işlem için sürükleyip bırakabilirsiniz). Ancak, bu linux üzerinde çalışırken, popup menüler fare tarafından basılmış ve mouseReleased tarafından tetiklenir gibi görünüyor. Bu, bir sürükleme yapmak için farenin sağ tuşuna bastığımda, açılır menüler tetiklenir (mouse'un olduğu yerde farelerin aksine).Linux'ta Java popup tetikleyicisi

Bu konuda nasıl çalışacağınıza dair herhangi bir fikir var mı?

Teşekkürler.

DÜZENLEME: Gönderme kodu

açılan menü için Kod

// this is called from mousePressed and mouseReleased 
if (e.isPopupTrigger() && !e.isConsumed()) { 
    // show the popup menu 
} 

Bu kod ne bu 3. parti kodudur (sağ fare tuşuna/sürükle çağırdı ama bu yüzden açık kaynak uzaklıkta yer alır gerektiğinde here gösterildiği gibi, isPopupTrigger() kullanmak için Evet)

// this is called on all mouse events 
if (buttonAction.mouseButton != 0) 
{ 
    // handle the event 
} 

cevap

11

değiştirebilir.

Zeyilname:

göründüğü isPopupTrigger linux içinde mousePressed üzerine tetiklenir.

Evet, Sen mousePressed() ve mouseReleased() hem isPopupTrigger() aramak zorunda Mac OS X'te aynı. GraphPanel'da ilgili bir örnek var.

+1

Görünüşe göre, linux'da mousePressed'dePopupTrigger tetikleniyor. –

+0

Doğru, bu yüzden, sağ fare basıldığında ve sürüklendiğinde bazı açılır olmayan eylemleri gerçekleştiren bir 3. parti kitaplığı kullanıyorum, bu, açılır pencerenin her zaman bu diğer eylemi yapmaya çalışırken göstereceği anlamına mı geliyor? –

+0

Sadece Windows üzerinde GraphPanel'i denedim ve ne demek istediğini anlıyorum. Üçüncü taraf API, seçim modelini açıklıyor mu? – trashgod

1

MouseEvent.isPopupTrigger(). Bu fare olayının platform için açılır menü tetikleyici olayı olup olmadığını döndürür.

düzenleme -: Hem mouse hem de mouse için kontrol edilen fareyi kontrol etmeniz gerekir.

+0

sağda tutmak gibi daha gelişmiş bir mekanizma kurmak zorundayım, bunu yapıyorum. Benim sorunum, sağ basma/sürükleme eylemini yapmak için farenin sağ tuşuna her bastığımda, açılan menü (ki istemiyorum) gösterir. –

+0

Kodu bu yöntemlerin her ikisinden de gönderebilir misiniz? Bunu yapmadan önce/yapmadan önce ne yaptığınızı söylemek zor. – user512802

+0

Gönderiyi, –

0

Durumunuzdaki doğru prosedürün, pop-up'ı nerede ve ne zaman göstereceğini birleştirmek olduğunu düşünüyorum. Bir sürükleme olayı varsa, varsa, bir basın olayını takip ederseniz, basın olayında açılır pencereyi göstermek için mantık yazmaktan kaçınmalısınız (ve sonra da açılır pencereyi görüntülemek için basın olayına mantık yazınız). Bazı kullanıcılar, pop-up tuşunu basılı tutarken pop-up gezinirken iyi hissediyorlar ve diğer bazı kullanıcılar sadece umursamıyor ya da bilmiyorlar. Ancak sizin durumunuzda, ekstra kod eklemeden sürüklerken açılır menüde gezinemezsiniz.

Her zaman, açma olayı üzerinde pop-up'ı göstermek için mantığı yönetir miydik. Sürüklemeden sonra bir yayınlama olayı girilmesi, pop-up'ın görünmemesi gerektiğini bilmek için yeterli bilgi olmalıdır. Ve elbette, her zaman kaynağı değiştirip değiştirebilirseniz.