【问题标题】:how to get int from JTextField with a JButton如何使用 JButton 从 JTextField 获取 int
【发布时间】:2013-07-29 01:58:27
【问题描述】:

我试图通过单击我的 JButton 从我的 JTextField 中获取一个 int,但我不知道该怎么做。我正在尝试获取 int 并将其设置为一个变量,以便我可以在我的程序中进一步使用它。

这是代码(这是整个方法):

    JFrame presets = new JFrame("Presets");
    presets.setVisible(true);
    presets.setSize(500, 500);

    JPanel gui = new JPanel(new BorderLayout(2,2));

    JPanel labelFields = new JPanel(new BorderLayout(2,2));
    labelFields.setBorder(new TitledBorder("Presets"));

    JPanel labels = new JPanel(new GridLayout(0,1,1,1));

    JPanel fields = new JPanel(new GridLayout(0,1,1,1));

    labels.add(new JLabel("Place values on Cat.2/Cat.3 at"));
    JTextField f1 = new JTextField(10);
    String text = f1.getText();
    int first = Integer.parseInt(text);
    labels.add(new JLabel("and place follow up value at"));
    fields.add(new JTextField(10));


    labelFields.add(labels, BorderLayout.CENTER);
    labelFields.add(fields, BorderLayout.EAST);

    JPanel guiCenter = new JPanel(new BorderLayout(2,2));

    JPanel submit = new JPanel(new FlowLayout(FlowLayout.CENTER));

    submit.add( new JButton("Submit") );
    guiCenter.add( submit, BorderLayout.NORTH );

    gui.add(labelFields, BorderLayout.NORTH);
    gui.add(guiCenter, BorderLayout.CENTER);

    JOptionPane.showMessageDialog(null, gui);

【问题讨论】:

标签: java swing jbutton jtextfield


【解决方案1】:

试试这个,

      String getText()

      Returns the text contained in this TextComponent.

因此,将您的字符串转换为整数:

try {
    int integerValue = Integer.parseInt(jTextField.getText());
}
catch(NumberFormatException ex)
{
    System.out.println("Exception : "+ex);
}

【讨论】:

  • 如何让我的 JButton 执行此操作?我是否只在我的 JButton 下方使用此代码?
  • @MadProgrammer 这就是我等待的原因。
  • @MadProgrammer 我试过没有任何效果,所以我来找你们寻求帮助
  • @ChildProdigy 很好,但要为一些紧张的学习做好准备;) - 花时间阅读链接的教程,当您对这些教程有特定问题时,请告诉我们。我们很乐意提供帮助,但您需要做好为此工作的准备;)
【解决方案2】:

您可能希望输入的数据为int。写在按钮动作中

JButton button = new JButton("Submit");
button.addActionListener(new ActionListener() {
  @Override
  public void actionPerformed(ActionEvent arg0) {
    try {
      int myInt=Integer.parseInt(jtextfield.getText());
      System.out.println("Integer is: "+myInt);
      //do some stuff
    }
    catch (NumberFormatException ex) {
      System.out.println("Not a number");
      //do you want
   }
  }
});

记住Integer.parseInt 抛出NumberFormatException 必须被捕获。见java docs

【讨论】:

    【解决方案3】:

    如果您想在提交按下时获取 f1 文本,请使用以下代码:

       .
       .
       .
        JPanel submit = new JPanel(new FlowLayout(FlowLayout.CENTER));
        JButton button = new JButton("Submit");
        button.addActionListener(new ActionListener() {
    
            @Override
            public void actionPerformed(ActionEvent arg0) {
                int first = Integer.parseInt(f1.getText().trim());
            }
        });
        submit.add(button);
        guiCenter.add(submit, BorderLayout.NORTH);
          .
          .
          .
    

    【讨论】:

    • 效果很好。如果我要为第二个文本字段这样做,我可以使用相同的按钮侦听器,对吗?
    • 当然可以。并且您必须在您使用的方法之前定义 first 和 f1 ,否则您将收到要求您将它们设为 final 的错误。
    • 作为一个快速说明,您可能希望使用f1.getText().trim() 删除可能位于输入String 开头或结尾的任何随机空格
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-18
    • 2021-12-16
    • 2021-02-16
    • 2011-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多