【问题标题】:How to store text field value in to a variable for further use of it in java swing?如何将文本字段值存储到变量中以便在 java swing 中进一步使用?
【发布时间】:2015-10-20 18:17:42
【问题描述】:

初始化变量“输入”,我想将文本存储到其中。这样我就可以使用该变量执行搜索操作。通过下面的代码,它没有采用变量输入。提前致谢。请任何人帮助我

字符串输入;

    jb.addActionListener(new ActionListener()
    {
        public void actionPerformed(ActionEvent ae) 
        {
            input = jt.getText(); // problem occurs here
            jl.setText(input);  
        }
    });

【问题讨论】:

  • 有什么问题?您收到错误消息吗?当jb 的侦听器被调用时,您能否验证jt 是否有文本?
  • 当你说问题时,到底发生了什么?
  • @Trobbins 如果他没有文本,他会不会得到一个仍然有效的空字符串..
  • @Pavan 你说得对,我的问题表述不正确。让 OP 考虑 jt 包含的内容/如果它被实例化,这更是一个种子。
  • 如需尽快获得更好的帮助,请发帖minimal reproducible exampleShort, Self Contained, Correct Example

标签: java swing variables text input


【解决方案1】:

注意:如果您想在程序的任何地方使用该对象,请在程序顶部声明它。就这样

import java.awt.EventQueue;

public class MyExample {

    private JFrame frame;
    String input;

您不应该在匿名类之外声明“输入”类型。这样,您会遇到类似“无法分配最终局部变量输入,因为它是在封闭类型中定义的”这样的错误。为避免出现此错误,请确保您以这种方式编写代码,

        jb.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String input = jt.getText();
                jl.setText(input);
            }
        });

所以你可以把输入放到 JLabel 中。

【讨论】:

  • 如果 OP 想要在内部类的上下文之外使用 input 值怎么办?
  • @MadProgrammer 对不起,我可能错了,我已经为这个问题创建了一个新项目并对其进行了测试。但是如果我把“字符串输入”放在外面,它会给我一个错误,所以我搜索了这个错误,发现一个匿名类制作了自己的副本并将对象放入它的副本中。这就是为什么你在外面定义的对象和里面的对象不再是同一个对象了。
  • @MadProgrammer 抱歉,我现在明白了。如果我们想在内部类之外使用它,我们应该在程序顶部声明它。我将编辑我的答案。
猜你喜欢
  • 2018-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-20
  • 1970-01-01
  • 2019-10-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多