如何在Java Swing中从JTextField中检索值?

44

如何从文本框中检索值并在actionPerformed()中使用? 我需要将该值转换为String以进行进一步处理。 我已经创建了一个文本框,单击按钮后我需要将输入的值存储到String中,请提供一段代码片段。


13
你有没有尝试阅读Javadoc文档? - Stephen C
2
这是一个重复的问题。也许不是单一的问题。但这不是一个新问题。获取文本和添加动作监听器。此外,我相信如果你谷歌搜索一下,甚至会有一个与你所描述的相同的例子。同时,以下是获取文本和添加动作监听器的链接:获取文本 & 添加动作监听器 - Boro
从JTextfield中获取值非常容易...尝试阅读Java文档......它将帮助您开发程序.. - Chetan
7个回答

70
testField.getText()

请参阅Java文档中的JTextField

示例代码如下:

button.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent ae){
      String textFieldValue = testField.getText();
      // .... do some operation on value ...
   }
})

10
* First we declare JTextField like this

 JTextField  testField = new JTextField(10);

* We can get textfield value in String like this on any button click event.

button.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent ae){
      String getValue = testField.getText()

   }
})

8
我们如何从文本框中获取值?
mytestField.getText();

ActionListener 示例:

mytextField.addActionListener(this);

public void actionPerformed(ActionEvent evt) {
    String text = textField.getText();
    textArea.append(text + newline);
    textField.selectAll();
}

1
@trashgod:它只是一个"\n"字符串。 - Nirmal- thInk beYond
4
那么像 String newline = System.getProperty("line.separator"); 这样的代码就是正确的吗? - trashgod

4
我发现有用的是下面这个条件。
String tempEmail = "";
JTextField tf1 = new JTextField();

tf1.addKeyListener(new KeyAdapter(){
    public void keyTyped(KeyEvent evt){
         tempEmail = ((JTextField)evt.getSource()).getText() + String.valueOf(evt.getKeyChar());
    }
});

有一个问题:控制键。只要你按下它们,它们就会被打印出来。例如,CONTROL、ALT、BACK等。所有这些键都将在你的字符串中被打印出来。 - Mesabloo

4
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Swingtest extends JFrame implements ActionListener
{
    JTextField txtdata;
    JButton calbtn = new JButton("Calculate");

    public Swingtest()
    {
        JPanel myPanel = new JPanel();
        add(myPanel);
        myPanel.setLayout(new GridLayout(3, 2));
        myPanel.add(calbtn);
        calbtn.addActionListener(this);
        txtdata = new JTextField();
        myPanel.add(txtdata);
    }

    public void actionPerformed(ActionEvent e)
    {
        if (e.getSource() == calbtn) {
            String data = txtdata.getText(); //perform your operation
            System.out.println(data);
        }
    }

    public static void main(String args[])
    {
        Swingtest g = new Swingtest();
        g.setLocation(10, 10);
        g.setSize(300, 300);
        g.setVisible(true);
    }
}

现在它正在运作。


重新格式化的代码,请恢复原样,如果不正确。不幸的是,这无法编译。 - trashgod
请不要大声喊叫,这会让你听起来很生气。即使忽略了缺失的导入,看起来你还缺少构造函数。我可以帮你修复吗? - trashgod
你知道如何从文本框中获取值,所以没问题。 - jayesh
不,这样更糟糕;我正在尝试帮助改进这个答案。您似乎在声明class serverfact并实例化名为VIEWBTN的内容。这两个名称都没有使用我熟悉的编程风格。 - trashgod
哈哈...太酷了,指挥点赞;-) 顺便说一句:你应该遵循Java命名规范。 - kleopatra
@kleopatra关于命名约定的说法是正确的:它们提高了可读性,例如class ServerFactJTextField resText。我之前对这个答案进行了负评,因为它是误导性的;现在它是正确的,所以我已经撤销了投票。我不确定它是否增加了先前答案的内容,但我会听从@harshini的意见,看它是否有用。我很乐意检查您提出的其他答案。我不能保证点赞,但我可以保证诚实、建设性的评论。 - trashgod

2

只需在actionPerformed内使用event.getSource()即可。

将其转换为组件。

例如,如果您需要下拉框:

JComboBox comboBox = (JComboBox) event.getSource();
JTextField txtField = (JTextField) event.getSource();

使用适当的API获取值, 例如:
Object selected = comboBox.getSelectedItem();  etc.

0

你可以在代码的任何地方使用getText()方法,只要它被你的对象实例化调用,所以你可以在类中的任何地方使用该方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接