user1404557
user1404557

Reputation: 27

How do I store information from the textFields?

Right now, I'm just testing the to make sure the button works...but this is my code for an applet that expands a binomial using Pascal's triangle! I have the equations for the actually figuring out part, I just need to know how to store the information from the JTextFields! Thanks!

import java.applet.Applet;     
import java.awt.*;     
import java.awt.event.*;     
import java.applet.*;     
import javax.swing.*;   
import java.text.DecimalFormat;  
import java.util.ArrayList;  
import javax.swing.Action; 

public class BinomialExpander extends JApplet implements ActionListener 
{   
  JLabel welcome;    
  JLabel directions;  
  JLabel example;    

  JLabel instructions;    
  JLabel startOfBinomial;    
  JLabel plusSign;    
  JLabel forExponent;    
  JLabel endOfBinomial;    

  JTextField txtFirst;    
  JTextField firstVar;    
  JTextField txtSecond;    
  JTextField secondVar;    
  JTextField exp;    


  JLabel lblExpanded;     
  JLabel outputExpanded;      
  double degreesFahrenheit;     
  FlowLayout layout;    
  Timer timer;    

  Button compute;    

  private int[] pascal1 = {1,1};    
  private int[] pascal2 = {1,2,1};    
  private int[] pascal3 = {1,3,3,1};    
  private int[] pascal4 = {1,4,6,4,1};    
  private int[] pascal5 = {1,5,10,10,5,1};    
  private int[] pascal6 = {1,6,15,20,15,6,1};    
  private int[] pascal7 = {1,7,21,35,35,21,7,1};    
  private int[] pascal8 = {1,8,28,56,70,56,28,8,1};    
  private int[] pascal9 = {1,9,36,84,126,84,36,9,1};    
  private int[] pascal10 = {1,10,45,120,210,120,45,10,1};    

  public void init()     
  {    
      Container c = getContentPane();     
      c.setBackground(Color.cyan);    

      layout = new FlowLayout();    
      layout.setAlignment(FlowLayout.LEFT);    
      c.setLayout(layout);    
      setSize(500,175);    

      welcome = new JLabel("Welcome to the Binomial Expander Applet!");    
      directions = new JLabel("Enter binomial in the form: '(number)(variable) + (number)(variable)^exponent'.");    
      example = new JLabel("Example: (4a + 2)^2.");    
      // instantiate JLabel object for Degrees Fahrenheit
      instructions = new JLabel("Enter the first number of your binomial(if there is a variable, add it into the second box):");
      // instantiate JTextField object for the degrees fahrenheit
      startOfBinomial = new JLabel(" (");
      txtFirst = new JTextField(4);
      // instantiate JLabel object for Degrees Celesius
      firstVar = new JTextField(4);
      plusSign = new JLabel(" + ");
      txtSecond = new JTextField(4);
      secondVar = new JTextField(4);
      endOfBinomial = new JLabel(")");
      forExponent = new JLabel("^");
      forExponent.setFont(new Font("Times New Roman", Font.BOLD, 9));
      exp = new JTextField(2);
      compute = new Button("Compute!");
      compute.addActionListener(this);
      lblExpanded = new JLabel("Your expanded binomial is: ");
      // JLabel to display the equivalent degrees Celsius
      outputExpanded = new JLabel("");
      c.add(welcome);
      c.add(directions);
      c.add(example);
      c.add(instructions);
      c.add(startOfBinomial);
      //CALL the addActionListener() method on the JTextField object 
      // for the degrees Fahrenheit
      txtFirst.addActionListener(this);
      // Add the textbox the celsius label and output label
      c.add(txtFirst);
      c.add(firstVar);
      c.add(plusSign);
      c.add(txtSecond);
      c.add(secondVar);
      c.add(endOfBinomial);
      c.add(forExponent);
      c.add(exp);
      c.add(compute);
      c.add(lblExpanded);
      c.add(outputExpanded);
     // timer = new Timer(1, this);
     // timer.start();
  }

  public void actionPerformed(ActionEvent event)     
  {    
      if (event.getSource() == compute)      
      {    
          outputExpanded.setText(expand());    
      }    
}
  public String expand()    
  {    
     String x = "callingComputing";    
     return x;    
  }    
} 

Upvotes: 1

Views: 5118

Answers (3)

thewhitetulip
thewhitetulip

Reputation: 3309

JTextField txtName = new JTextField();
JButton btn = new JButton();

in the action performed method add this

String name = txtname.getText();

this statement returns the text that is entered in the text field the second before you click the button

You create a class where you'll store the data, and create an object of that in the Frame class, i.e. the class that'll provide the GUI to the data class, then in the action listener of the submit button of the frame assign the getText() returned string to the object's field

for eg: you want to take input name and age from the text field, create a Person class

public class Person{
public String name;
public int age;
}

now create a GUI class

public PersonFrame extends JFrame{

public person;
public PersonFrame(){
person = new Person();
JTextField txtName = new JTextField();
JButton btn = new JButton();

btn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
  person.name = txtName.getText();
  person.age = Integer.parseInt(txtAge.getText()); //as the textfield returns a String always
}
});
}

} and avoid using

  if (event.getSource() == compute)      
      {    
          outputExpanded.setText(expand());    
      } 

If you have 100 button it'll be foolish to write nested if-else statements to check which button generated the event!!

remember that swing is designed for providing the user interface and you need an object of a class for storing the data! for java tutorial visit here

Upvotes: 0

mprabhat
mprabhat

Reputation: 20323

JTextField extends JTextComponent, which has API to deal text manipualtion.

As suggested by other answers use setText to replace the current text with new text.

Also read the official tutorial to understand How to Use Text Fields

Upvotes: 1

Zavior
Zavior

Reputation: 6452

yourTextField.getText() returns a String you can use as you would any other String, store it in an array, teach it to sing, fly and enjoy life. Conversely, you can use yourTextField.setText() to display stuff in your JLabel, textfield etc.

Upvotes: 2

Related Questions