日期:2014-05-20  浏览次数:20622 次

java的GUI设计,怎么样获得具有焦点的控件,比如说文本框!text.isFocusControl怎么不行?~~~~~~~~~~
窗口中有很多文本框,单击某个文本框,要怎么获得对应的文本框对象啊?
我的想法是遍历所有的text对象,然后利用text.isFocusControl,这个不是判断该text是否获得焦点的么,
为什么老报错。
还有,我写了一个监听线程,就是一旦某个文本框获得焦点,就做相应的操作。
各位辛苦了!

------解决方案--------------------
Java code
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;

import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JTextField;

public class TestText extends JFrame implements FocusListener {

    private JTextField[] txts = new JTextField[3];

    public TestText() {
        getContentPane().setLayout(new FlowLayout());

        for (int i = 0; i < txts.length; i++) {
            txts[i] = new JTextField("Test" + i);
            txts[i].setName("我是Text:" + i);
            txts[i].setPreferredSize(new Dimension(70, 20));
            txts[i].addFocusListener(this);

            getContentPane().add(txts[i]);
        }

        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(300, 200);
    }

    public void focusGained(FocusEvent e) {
        System.out.println(((JComponent) e.getSource()).getName());
    }

    public void focusLost(FocusEvent e) {

    }

    public static void main(String[] args) {
        TestText frame = new TestText();
        frame.setVisible(true);
    }
}

------解决方案--------------------
探讨
Java codeimport java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;

import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JTextField;

public class TestText extends JFrame implements FocusListener {

private JTextField[] txts = new JTextField[3];

public TestText() {
getConten…