如何设置 TextField 的值

Posted

技术标签:

【中文标题】如何设置 TextField 的值【英文标题】:How do I set the TextField's value 【发布时间】:2021-12-21 22:13:38 【问题描述】:

我的简单问题是为什么它不起作用? tf1.getText() 有问题,但我不明白为什么。所以我想要的是,我有一个按钮,当我在 tf1 中编写文本然后按下按钮时,tf2 将输出相同的文本并进行一些修改。或者我是否需要另一个设置 tf1 的侦听器,如果需要,我应该如何实现它?谢谢!

public class CaesarFrame extends JFrame
    JTextField tf1;
    JTextField tf2;
    JButton jb;
    JComboBox box;
    JLabel label;
    JPanel j1;
    JPanel j2;
    
    class OkButtonActionListener implements ActionListener
        public void actionPerformed(ActionEvent e) 
            String k= tf1.getText();          //HERE IS THE PROBLEM
            caesarCode c=new caesarCode(k);
            tf2.setText(c.get());
        
    
    
    public CaesarFrame() 
        JFrame frame=new JFrame("Swinglab");
        frame.setPreferredSize(new Dimension(400,110));
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setResizable(false);
        String[] characters=new String[26];
        for(int i=65;i<91;i++)//COMBOBOX->
            characters[i-65]=String.valueOf((char)i);
        JComboBox box = new JComboBox(characters);
        JTextField  tf1=new JTextField("",20);
        JTextField  tf2=new JTextField("",20);
        JButton jb=new JButton("Code!");
        ActionListener listen=new OkButtonActionListener();       //ACTIONLISTENER
        jb.addActionListener(listen);
        JLabel label= new JLabel("Output: ");
        JPanel j1=new JPanel();
        JPanel j2=new JPanel();
        j1.add(box);//ITT IS LEEBTNE LAYOUTOT ADNI
        j1.add(tf1);
        j1.add(jb);
        j2.add(label);
        j2.add(tf2);
        tf2.setEditable(false);
        frame.add(j1,BorderLayout.NORTH);
        frame.add(j2,BorderLayout.SOUTH);
        frame.pack();
        frame.setVisible(true);
    

【问题讨论】:

您正在使用多个文本字段,您已在类级别声明它们,但在创建它们的方法中重新声明它们。您在本地设置值,但您尝试从实例成员中获取值,其中没有任何值。 【参考方案1】:

正如 Stultuske 在评论中所说,您在构造函数中重新声明了全局字段 tf1 和 tf2。这意味着您在 JPanel 上看到的 tf1 仅存在于您的构造函数方法中,并且与全局 tf1 字段不同。

【讨论】:

以上是关于如何设置 TextField 的值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Xcode 7 的 UI 测试中获取对 TextField 的引用

来自父级的 TextField 默认值未在子级上呈现

SwiftUI:TextField文本输入

如何在 React 中使用 Material-UI 在 onFocus 事件的 Textfield 中选择部分文本?

SwiftUI如何让绑定到同一个状态的多个TextField呈现出不同输入行为

SwiftUI如何让绑定到同一个状态的多个TextField呈现出不同输入行为