我的一界面里有两个JTextArea,我想让光标在那个JTextArea里面,就对其操作,例如我复制一个字符串,把光标放在那个位置,就在那粘贴,就是想获取焦点所在的组件,请帮忙一下

解决方案 »

  1.   

    JTextArea的requestFocus()方法可以获得焦点
    至于你说的什么粘贴,我没明白是什么意思
      

  2.   

    发现这里提问的同志表达能力都有点问题你的意思是不是想表达,哪个area获得焦点,就得到这个area的对象,并对其进行操作?要为他们添加焦点监听事件,具体代码我随便写了点,你试下看看吧。import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class FocusTest extends JFrame{
    JTextArea txaA=new JTextArea();
    JTextArea txaB=new JTextArea();
            //构造函数
    public FocusTest(){
    this.getContentPane().add(txaA,BorderLayout.NORTH);
    this.getContentPane().add(txaB,BorderLayout.SOUTH);
    listen();
    this.setSize(300,200);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setVisible(true);
    }
            
    public void listen(){
                    //为A文本域添加焦点侦听器,使用FocusListener作为参数
    txaA.addFocusListener(new FocusListener(){
                            //实现失去焦点方法。
    public void focusLost(FocusEvent e){
    txaA.setText("我已失去焦点!");
    }
                            //实现得到焦点方法。
    public void focusGained(FocusEvent e){
    txaA.setText("我已得到焦点!");
    txaB.setText("");//清空B
    }
    });
                    //为B文本域添加焦点侦听器,使用FocusAdapter作为参数
    txaB.addFocusListener(new FocusAdapter(){
    public void focusGained(FocusEvent e){
    txaB.setText("我已获得焦点!");
    }
    });
    }
    public static void main(String[] args){
    new FocusTest();
    }
    }
      

  3.   

    这里要说明一下,使用FocusAdapter,只需要实现“失去”或者“获得”,任意一个方法就可以了!而使用FocusListener,必须同时实现这两个方法。
    其实,也可以不一一为每一个控件都添加监听,只需要为整个窗体添加一个监听,然后在事件监听代码里,使用(强制转换)e.getSource()得到触发事件的那一个部件,然后对其进行你要的操作就可以了。e是FocusEvent的变量名……
      

  4.   

    grabFocus();呢?
      

  5.   

    多谢,我想问一下就是想用按钮粘贴已复制的数据,使用按钮事件,在焦点所在的JTextField中进行操作,怎么样处理这两个不同的对象,使用FocusLister好象不行,无法使用按钮
      

  6.   

    有学习了点东西:{使用FocusAdapter,只需要实现“失去”或者“获得”,任意一个方法就可以了!而使用FocusListener,必须同时实现这两个方法}
      

  7.   

    我想要的是如何判断焦点所在的那个组件,例如,如果在jtf1,按钮事件就对jtf1进行操作,请帮忙
      

  8.   

    不过调用listen函数下的监听函数怎么触发?能再贴段代码吗?