我想在JTextArea里根据鼠标的位置插入一个字符,有高人能指点一下么感激不尽

解决方案 »

  1.   

    不太明白,楼主是想当鼠标移到textarea上的时候,不用获得焦点,直接输入?!
      

  2.   

    应该要获得焦点吧,比如TextArea里有一段文字,鼠标光标在里面选中一个位置,在那个位置插入个字符
      

  3.   

    在网上找的, 研究了一下, 很好
    <textarea cols="100" rows="10" onmouseup="getValue(this)">你在这里我在哪里</textarea>
    <input type=text  value="abc" onmouseup="getValue(this)">
    <script language="javascript">function getPosition(obj){ var result = 0;

    if(obj.selectionStart){ // 非ie

    result = obj.selectionStart;

    } else { // ie

    var rng;

    if(obj.tagName == "TEXTAREA"){ // 文本区

    rng = event.srcElement.createTextRange();

    rng.moveToPoint(event.x,event.y);

    }else{ // 普通输出框

    rng = document.selection.createRange();
    }

    rng.moveStart("character",-event.srcElement.value.length);

    result = rng.text.length;
    }
    return result;
    }function getValue(obj){

    var pos = getPosition(obj); alert(obj.value.substr(0,pos)+" [光标在这] "+obj.value.substr(pos,obj.value.length));
    }
    </script>
      

  4.   

    既然获得焦点,鼠标点击后在光标处不是可以直接输入么?楼主不能输入?另:3楼你搞错了,楼主说的JTextArea,不是textArea标签吧。
      

  5.   

    可以通过
    1.getCaretPosition获得当前光标位置
    2.添加CaretListener,监听光标变化事件.
      

  6.   


    public int getCaretPosition()返回文本组件的文本插入符的位置。6楼能具体说下这个返回的int值怎么用?
    我想把弹出窗口输入的值插入到JTextArea中光标所在的位置 
      

  7.   

    楼主看下是不是这样的import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JTextField;public class Test1121 extends JFrame{

    public Test1121(){
    setBounds(100, 100, 200, 200);
    setLayout(null);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    final JTextField text = new JTextField();
    text.setBounds(20, 20, 150, 15);
    add(text);
    JButton button = new JButton("啊啊");
    button.setBounds(20, 60, 70, 20);
    button.addActionListener(new ActionListener(){ @Override
    public void actionPerformed(ActionEvent e) {
    String str = text.getText();
    StringBuffer buffer = new StringBuffer(str);
    int pos = text.getCaretPosition();
    String info = "插入的字";
    buffer.insert(pos, info.toCharArray());
    text.setText(buffer.toString());
    }

    });
    add(button);
    setVisible(true);
    }

    public static void main(String[] args){
    new Test1121();
    }
    }