2009-07-24 18 views
6

Şu anda fare üzerinde nerede olduğunuza göre JEditorPane içindeki bir metin parçasında konum bulmam gereken bir sorunu çözmeye çalışıyorum tıkladım.Java Swing'te JEditorPane'de fare konumundan karakter konumu nasıl dönüştürülür?

Temel olarak, kullanıcı bir kelimeyi sağ tıklattığında, kelimenin ne olduğunu bulmam gerekiyor. Bunu yapmak için kullanıcının tıkladığı metinde hangi konumun bulunduğunu öğrenmem gerekiyor. Farenin MousePressed yöntemine geçirilen MouseEvent öğesinden kolayca alabileceğimi biliyorum ve bunu karakter dizisini metin parçasında almak için dönüştürebileceğimi söylüyorum - ancak nasıl yapılacağını anlayamıyorum bu.

JEditorPane'de viewToModel() yöntemini denedim, ancak bu, yanlış şekilde kullanıyorum ya da yanlış şekilde kullanıyorum.

Herhangi bir fikrin var mı?

public void mouseClicked(MouseEvent e) { 
    JEditorPane editor = (JEditorPane) e.getSource(); 
    Point pt = new Point(e.getX(), e.getY()); 
    int pos = editor.viewToModel(pt); 
    // whatever you need to do here 
} 

cevap

9

Bunu yapmak için doğru bir yoldur. Görünüşe göre viewToModel() tam olarak burada kullanmam gereken şeydi, sorun yanlış noktadan geçiyordu.

MouseEvent öğesinden, aslında getPoint() yöntemini kullanmam gerekirken noktayı bulmak için getLocationOnScreen() yöntemini kullanıyordum.

Bu soruyu okuyan herkese teşekkürler.

+0

Teşekkürler, cevabınızı kabul edilen kişi olarak belirledim, cevabımdan göreceğiniz gibi, bu neredeyse yaptığım gibi. – Scottm

+0

@ ChssPly76 Bunun yerine bir JTable için kullanılabilir mi? – Igor

+0

viewToModel() yöntemi, daha genel JTextComponent sınıfı tarafından zaten sağlanmıştır. Bir JTable için, önce Hücreyi geri döndürecek başka yöntemler vardır ve sonra Hücre oluşturucu/editörüne bağlı olarak uygun bir yöntemi çağırması gerekir. –

0

başıma bu sorunu hallettim: viewToModel() çağırma

İlgili konular