簡體   English   中英

如何設置 TextField 的值

[英]How do I set the TextField's value

我的簡單問題是為什么它不起作用? 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);
    }
}

正如 Stultuske 在評論中所說,您正在構造函數中重新聲明全局字段 tf1 和 tf2 。 這意味着您在 JPanel 上看到的 tf1 僅存在於您的構造函數方法中,與全局 tf1 字段不同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM