2013-08-21 27 views
0

我一直在嘗試創建一個JFrame程序,它需要兩個數字和一個 操作(在jcombobox中)來計算答案。我需要爲用戶輸入數字1和2,並將該值分配給可用於計算答案的int。 num1是int變量,num1field是文本字段的名稱。如何從JTextField中取值並將其移入Int變量

num1field.addActionListener(
     new ActionListener(){ 
      public void actionPerformed(ActionEvent event){ 
       num1 = Integer.parseInt(num1field.getText()); 
       num1field.setText(num1); 
      } 
     } 
    ); 

是的,num1 int已經被聲明在類的頂部。我得到一個錯誤,它說setText。

感謝所有幫助:)

+0

回答按MadProgrammer(1+),但在未來,如果你得到一個錯誤,這是張貼在這裏的錯誤是個好主意讓我們看看。它通常會告訴你到底發生了什麼問題。 –

+0

你的代碼根本沒有意義.. 1)'setText()'期望一個字符串。 2)你正在將字符串解析爲整數,並將相同的值設置爲相同的文本域 – nachokk

回答

2

沒有方法JTextField#setText(int),只能提供一個String

num1field.setText(String.valueOf(num1)); 

應工作

你可能想看看How to use Formatted Text FieldsHow to use Spinners它可能會爲您提供更好的功能來實現您的目標

已更新,例如想法如何計算結果值

import java.awt.BorderLayout; 
import java.awt.EventQueue; 
import java.awt.GridBagLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.DefaultComboBoxModel; 
import javax.swing.JButton; 
import javax.swing.JComboBox; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 
import javax.swing.UIManager; 
import javax.swing.UnsupportedLookAndFeelException; 

public class QuickCalc { 

    public static void main(String[] args) { 
     new QuickCalc(); 
    } 

    public QuickCalc() { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { 
       } 

       JFrame frame = new JFrame("Testing"); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.setLayout(new BorderLayout()); 
       frame.add(new TestPane()); 
       frame.pack(); 
       frame.setLocationRelativeTo(null); 
       frame.setVisible(true); 
      } 
     }); 
    } 

    public class TestPane extends JPanel { 

     private JTextField numField1; 
     private JTextField numField2; 
     private JComboBox cbModifier; 
     private JLabel lblResult; 

     private JButton equals; 

     public TestPane() { 

      numField1 = new JTextField(4); 
      numField2 = new JTextField(4); 
      cbModifier = new JComboBox(); 
      equals = new JButton("="); 
      lblResult = new JLabel("?"); 

      DefaultComboBoxModel<String> model = new DefaultComboBoxModel<>(); 
      model.addElement("+"); 
      model.addElement("-"); 
      model.addElement("/"); 
      model.addElement("x"); 
      cbModifier.setModel(model); 

      setLayout(new GridBagLayout()); 
      add(numField1); 
      add(cbModifier); 
      add(numField2); 
      add(equals); 
      add(lblResult); 

      equals.addActionListener(new ActionListener() { 

       @Override 
       public void actionPerformed(ActionEvent e) { 
        try { 
         int num1 = Integer.parseInt(numField1.getText()); 
         int num2 = Integer.parseInt(numField2.getText()); 

         // Make your calculations here... 
         // Update the lblResult with the resulting value... 
         lblResult.setText(String.valueOf(42));       
        } catch (NumberFormatException nfe) { 
         nfe.printStackTrace(); 
         lblResult.setText("Bad numbers"); 
        } 
       }      
      }); 
     } 
    } 
} 
+0

它仍然告訴我,無論我做什麼,答案都是零。如果你需要我,我可以發佈整個程序。 – user2280906

+0

你的'actionPerformed'方法是否開始被調用? – MadProgrammer

+0

我也建議您僅在需要時從文本字段提取值... – MadProgrammer

相關問題