【问题标题】:Can't get text from a JTextField via Anonymous class无法通过匿名类从 JTextField 获取文本
【发布时间】:2014-11-04 22:41:18
【问题描述】:

基本上,这就是需要发生的事情:

  1. 单击提交按钮,操作侦听器将其拾起并打印提交时文本字段中的内容。

由于某种原因,它没有拾取文本框中的文本? 顺便说一句,“按下提交按钮”正在打印! 这是一个愚蠢的问题,但我不习惯匿名类。我相信问题出在变量修饰符上。这是我的代码简化:

 public class MainWindw extends JFrame {

 public static  JTextField txt1;
 final JButton submit;

 public MainWindw()
 {
  //add panel...add textfield etc..
  txt1 = new JTextField();
  submit = new JButton("Submit");


       submit.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e){

            System.out.println("Submit button pressed" + txt1.getText());}

        }
    });
  }
 }

【问题讨论】:

  • submit.addActionListener 这叫什么名字?好像你只是在现场漂浮,这会产生编译错误。另外,是否打印了“按下提交按钮”?
  • 在构造函数中,对不起。
  • 请发布一个我们可以测试的小型可编译运行程序,mcve。不可编译的 sn-ps 通常毫无价值。您在问“为什么我的代码不起作用?”,请让我们找出答案。
  • “按下提交按钮”正在打印是。
  • 不,它不是我的完整代码,我的代码运行良好,甚至打印了 printLine 中的文本。所以它必须是可见性修饰符或其他东西

标签: java swing jtextfield


【解决方案1】:

我已经尝试过这个解决方案,它确实有效。老实说,除了一些编译错误之外,我在您的代码中没有看到任何问题,但我认为是因为您简化了代码

public static JTextField txt1;
final JButton submit;

public MainWindw()
{
    JFrame panel = new JFrame();
    txt1 = new JTextField();
    submit = new JButton("Submit");
    panel.setLayout(new FlowLayout());
    panel.add(txt1);
    panel.add(submit);
    submit.addActionListener(new ActionListener()
    {
        public void actionPerformed(ActionEvent e)
        {
            System.out.println("Submit button pressed" + txt1.getText());
        }
    });
    panel.setSize(300, 300);
    panel.setVisible(true);
}

【讨论】:

  • 非常感谢,这让我想起了我遗漏的东西。感谢您不像我上面的其他人那样对我的帖子投反对票,因为我简化了我的代码。
  • @user2855405:他所做的只是表明您发布的代码没有显示错误,这是我们一直告诉您的。你漏掉了什么?
  • 不客气,不能对问题投反对票,问题是用来学习的;)
  • 是的,如果问题的提出方式对未来没有任何帮助,您可以投反对票。我们仍然完全不知道他的初始代码出了什么问题,如果问题得到改进,您可以投票赞成。我仍然希望这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-29
  • 2018-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多