关于JTextFiled无法获取当前输入的文本的问题

用swing写了一个gui的小程序,想从JTextFiled里获取用户当前输入的文本,看了很多资料都是说用getText()方法,但是我用这个方法始终无法获取用户在这个JTextFiled里输入的文本,而是我硬编码在程序中的初始文本,请问各位要怎么样才能获取用户在JTextFiled里输入的当前文本呢?
[b]问题补充:[/b]
[code="java"]
if (id.getText() != null && !id.getText().equals("") && name.getText() != null && !name.getText().equals("")) {
queryActionlistener = new QueryAction(new Integer(id.getText()),
new HSSFRichTextString(name.getText()));
} else if (id.getText() != null && !id.getText().equals("") && name.getText() == null) {
queryActionlistener = new QueryAction(new Integer(id.getText()));
} else if (id.getText() == null && name.getText() != null && !name.getText().equals("")) {
queryActionlistener = new QueryAction(new HSSFRichTextString(name
.getText()));
} else {
return;
}
[/code]
这是代码,有点乱,见谅
[b]问题补充:[/b]
把上面的代码整理了一下:
[code="java"]
QueryAction queryActionlistener = null;
String inputId = id.getText();
String inputName = name.getText();
if (inputId != null && !inputId.equals("") && inputName != null
&& !inputName.equals("")) {
queryActionlistener = new QueryAction(new Integer(inputId),
new HSSFRichTextString(inputName));
} else if (inputId != null && !inputId.equals("")
&& (inputName == null || inputName.equals(""))) {
queryActionlistener = new QueryAction(new Integer(inputId));
} else if ((inputId == null || inputId.equals("")) && inputName != null
&& !inputName.equals("")) {
queryActionlistener = new QueryAction(new HSSFRichTextString(
inputName));
} else {
return;
}
query.addActionListener(queryActionlistener);
[/code]
另外,再把对应的内部类QueryAction的代码也贴出来,我是初学者,有任何不对的地方大家都可以指出来,谢谢!下面是QueryAction 的代码:
[code="java"]
private class QueryAction implements ActionListener {

    EmployeeDO employee = new EmployeeDO();

    public QueryAction(long id, HSSFRichTextString name) {
        this.employee.setId(id);
        this.employee.setName(name);
    }

    public QueryAction(long id) {
        this.employee.setId(id);
    };

    public QueryAction(HSSFRichTextString name) {
        this.employee.setName(name);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        QueryEmployeeResultDO resultDO = BaseService
                .queryEmployee(employee);
        if (resultDO == null) {
            return;
        }

        employeeName.setText(resultDO.getName().getString());
        employeeId.setText(String.valueOf(resultDO.getId()));
        employeeTel.setText(resultDO.getTel().getString());
        employeeAddress.setText(resultDO.getAddress().getString());
        employeeBirthday.setText(resultDO.getBirthday().getString());

    }

}

[/code]
最后再说明一下,这段代码的目的是想根据用户在JTextFiled里输入的name或者id来查询相应的人员信息,在测试的时候我将name或者id在代码里硬编码赋值是可以在GUI界面上查询出我指定的信息的,但是我在GUI界面的JTextFiled里输入的name或者id就不行,查出来的结果还是根据我硬编码进去的name或id所指定的信息,按理说JTextFiled.getText()是应该获取当前输入的文本的才对,而且这个问题应该不是我硬编码去初始化id或name导致的,因为即使不做任何初始化,还是无法通过
JTextFiled.getText()获取用户当前输入的文本,我实在搞不明白问题到底出在哪里,还请大家帮忙分析分析
[b]问题补充:[/b]
整个工程已压缩上传,见附件,其中用到了poi,可能需要你自己在本地重新导入一下poi的依赖包,poi的依赖包我已经放在根目录下了

oo

7个回答

也就是说你不在代码中写

id = new JTextField(15);
nameTitle = new JLabel("员工姓名:");
name = new JTextField(15);

程序直接就在

if (inputId != null && !inputId.equals("") && inputName != null
&& !inputName.equals("")) {
queryActionlistener = new QueryAction(new Integer(inputId),
new HSSFRichTextString(inputName));
} else if (inputId != null && !inputId.equals("")
&& (inputName == null || inputName.equals(""))) {
queryActionlistener = new QueryAction(new Integer(inputId));
} else if ((inputId == null || inputId.equals("")) && inputName != null
&& !inputName.equals("")) {
queryActionlistener = new QueryAction(new HSSFRichTextString(
inputName));
} else {
return;
}

上面这个地方return了.所以你下面的事件根本没有增加
query.addActionListener(queryActionlistener);

获取JTextFiled的文本用getText没有错,是不是在获取的方式有问题。把code贴出来吧!

是 getText()方法啊,没有任何问题啊。

[quote][code="java"]
if (id.getText() != null && !id.getText().equals("") && name.getText() != null && !name.getText().equals("")) {

queryActionlistener = new QueryAction(new Integer(id.getText()),

new HSSFRichTextString(name.getText()));

} else if (id.getText() != null && !id.getText().equals("") && name.getText() == null) {

queryActionlistener = new QueryAction(new Integer(id.getText()));

} else if (id.getText() == null && name.getText() != null && !name.getText().equals("")) {

queryActionlistener = new QueryAction(new HSSFRichTextString(name

.getText()));

} else {

return;

}

[/code]
这是代码,有点乱,见谅[/quote]
是够乱的,先说编码风格吧,为什么不把id.getText()等等用临时变量来引用,既影响阅读,有影响效率。

从所贴代码,还是看不出问题所在。

[quote]最后再说明一下,这段代码的目的是想根据用户在JTextFiled里输入的name或者id来查询相应的人员信息,在测试的时候我将name或者id在代码里硬编码赋值是可以在GUI界面上查询出我指定的信息的,但是我在GUI界面的JTextFiled里输入的name或者id就不行,查出来的结果还是根据我硬编码进去的name或id所指定的信息,按理说JTextFiled.getText()是应该获取当前输入的文本的才对,而且这个问题应该不是我硬编码去初始化id或name导致的,因为即使不做任何初始化,还是无法通过 [/quote]
整理了一下代码,好多了!
所给代码仍然无法真的。将project压了上传吧!

id = new JTextField(15);
nameTitle = new JLabel("员工姓名:");
name = new JTextField(15);
query = new JButton("查询");

QueryAction queryActionlistener = null;
String inputId = id.getText();
String inputName = name.getText();
if (inputId != null && !inputId.equals("") && inputName != null
&& !inputName.equals("")) {
queryActionlistener = new QueryAction(new Integer(inputId),
new HSSFRichTextString(inputName));
} else if (inputId != null && !inputId.equals("")
&& (inputName == null || inputName.equals(""))) {
queryActionlistener = new QueryAction(new Integer(inputId));
} else if ((inputId == null || inputId.equals("")) && inputName != null
&& !inputName.equals("")) {
queryActionlistener = new QueryAction(new HSSFRichTextString(
inputName));
} else {
return;
}
query.addActionListener(queryActionlistener);

你在程序初始化的时候就控制这个addActionListener,所以你不从代码里输入15,而直接从文本框来输入点查询按钮是没有时间激发的

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问