【问题标题】:Swing/Java: How to use the getText and setText string properlySwing/Java:如何正确使用 getText 和 setText 字符串
【发布时间】:2011-07-25 12:52:17
【问题描述】:

在单击名为 button1Button 后,我试图使输入 nameField 出现在名为 label1Label 中。 现在它说:'txt',我明白为什么。但我不知道如何使用字符串! 谁能解释我做错了什么以及如何正确使用这个字符串?

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class thisismytest2 {
    public static void main(String[] args) {

        final JFrame frame = new JFrame();  
        JPanel panel = new JPanel();    
        JTextField nameField = new JTextField("...", 2);    
        JButton button1 = new JButton();
        final JLabel label1 = new JLabel();
        label1.setText("txt");
        label1.setVisible(false);
        String txt = nameField.getText();

        frame.add(panel);
        panel.add(button1);
        panel.add(label1);
        frame.setSize(200,200);
        frame.setVisible(true);
        panel.add(nameField);
        frame.setSize(600,400); 
        nameField.setBounds(400, 40, 400, 30);

        button1.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent arg0) {

                label1.setVisible(true);
            }
        });
        }
        }

【问题讨论】:

  • 您刚刚检索了 nameField 文本字段的初始文本,并且您的 txt 变量不会自动更新,因为该变量与文本字段的 text 属性之间没有绑定,这就是您需要的原因正如答案所指出的那样,在 actionPerformed 方法中更新 txt 变量。如果您(稍后)对能够将元素绑定在一起(更强大的方法)感兴趣,那么请知道有一些库可以做到这一点,例如:java.net/projects/beansbinding
  • 非常感谢您的回答!我很感激并好好看看它
  • 如何获取 JButton 的名称以便在 IF 语句中检查它???

标签: java swing jbutton jlabel settext


【解决方案1】:

您正在将单击按钮之前的标签文本设置为“txt”。而是在单击按钮时调用标签上的setText() 并将文本字段中的文本传递给它。

例子:

label1.setText(nameField.getText()); 

【讨论】:

  • 感谢您的快速回复,然后我可以从上面的行中删除 setText 吗?
  • 是的,除非您希望它具有默认文本,否则您不需要它。
  • 所以我什至不需要 String txt = nameField.getText ? :o
  • @Opoe,如果您打算在其他地方使用它,您只需要将文本保存到字符串变量中。
  • 好的,谢谢,错误提示必须将 nameField 声明为 final。我必须在 JTextField 之前添加 final 吗?
【解决方案2】:

在您的操作执行方法中,调用:

label1.setText(nameField.getText());

这样,当按钮被点击时,label 会更新为 nameField 文本。

【讨论】:

    【解决方案3】:

    getText 方法返回一个字符串,而setText 接收一个字符串,所以你可以在你的监听器中写成label1.setText(nameField.getText());

    【讨论】:

      【解决方案4】:

      在 nameField 上设置 DocumentListener。当 nameField 更新时,更新您的标签。

      http://download.oracle.com/javase/1.5.0/docs/api/javax/swing/JTextField.html

      【讨论】:

      • 此链接指向旧版 Java。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多