[英]JTextArea - get the line of the current mouse position
我想在JTextArea中獲取當前mousePosition的行。
我找不到使用從MouseMotionAdapter
> event.getPoint();
接收到的坐標來獲取線的方法event.getPoint();
。
有誰知道,我該怎么做?
這是在viewToModel()
和getLineOfOffset()
方法的幫助下的簡單示例:
import java.awt.BorderLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.text.BadLocationException;
public class TestFrame extends JFrame {
private JTextArea area;
private JLabel l;
public TestFrame() {
init();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
private void init() {
area = new JTextArea(5,5);
area.addMouseMotionListener(getListener());
l = new JLabel(" ");
add(new JScrollPane(area));
add(l,BorderLayout.SOUTH);
}
private MouseMotionListener getListener() {
return new MouseMotionListener() {
@Override
public void mouseMoved(MouseEvent e) {
int viewToModel = area.viewToModel(e.getPoint());
if(viewToModel != -1){
try {
l.setText("line: "+(1+area.getLineOfOffset(viewToModel)));
} catch (BadLocationException e1) {
e1.printStackTrace();
}
}
}
@Override
public void mouseDragged(MouseEvent e) {
}
};
}
public static void main(String args[]) {
new TestFrame();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.