2017-06-14 46 views
0

我正在使用Java Ready 1.4。 我已經提到從JTextField獲取值併發布它們的代碼,但是我得到了這個補充錯誤: 沒有在類型「java.lang.String」中找到名爲「getText」的方法。如何從Java中的JTextField將字​​符串檢索到Action Listener?

我的程序:

import java.awt.*; //for Dimension 
import javax.swing.*; //for GUI components 
import java.awt.event.*; //for MessageListener 

public class MortgageCalculator extends JFrame implements ActionListener 
{ 
public String nameField, ageField, incomeField, priceField, downPayField, interestRateField, paymentField, amortField; 

public MortgageCalculator() 
{ 
    //Frame 
    JFrame frame = new JFrame(); 
    frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); 
    frame.setSize (new Dimension (300, 250)); 
    frame.setTitle ("Mortgage Calculator"); 
    frame.getContentPane().setLayout (new BorderLayout()); 

    //User Information (Input) - Center Panel 
    JPanel centerPanel = new JPanel (new GridLayout (16, 1)); 
    //Personal Information 
    centerPanel.add (new JLabel ("Personal Information", SwingConstants.CENTER)); 
    centerPanel.add (new JLabel ("Full Name:")); 
    final JTextField nameField = new JTextField(); 
    centerPanel.add (nameField); 
    centerPanel.add (new JLabel ("Your Age:")); 
    final JTextField ageField = new JTextField(); 
    centerPanel.add (ageField); 
    centerPanel.add (new JLabel ("Yearly Income:")); 
    final JTextField incomeField = new JTextField(); 
    centerPanel.add (incomeField); 
    centerPanel.add (new JLabel()); 
    //Mortgage Information 
    centerPanel.add (new JLabel ("Mortgage Information", SwingConstants.CENTER)); 
    centerPanel.add (new JLabel ("Price of Property:")); 
    final JTextField priceField = new JTextField(); 
    centerPanel.add (priceField); 
    centerPanel.add (new JLabel ("Down Payment:")); 
    final JTextField downPayField = new JTextField(); 
    centerPanel.add (downPayField); 
    centerPanel.add (new JLabel ("Interest Rate (%):")); 
    final JTextField interestRateField = new JTextField(); 
    centerPanel.add (interestRateField); 
    centerPanel.add (new JLabel ("Amortization Period (Years):")); 
    frame.getContentPane().add (centerPanel, BorderLayout.CENTER); 

    //User Options (Input) - South Panel 
    JPanel southPanel = new JPanel (new GridLayout (8, 3)); 
    //Payment Option 
    southPanel.add (new JLabel ("Payment:")); 
    southPanel.add (new JLabel ("Type in 1, 2 or 3")); 
    southPanel.add (new JLabel()); 
    southPanel.add (new JLabel ("1. Weekly")); 
    southPanel.add (new JLabel ("2. Biweekly")); 
    southPanel.add (new JLabel ("3. Monthly")); 
    final JTextField paymentField = new JTextField(); 
    southPanel.add (paymentField); 
    southPanel.add (new JLabel()); 
    southPanel.add (new JLabel()); 

    //Amortization Period Option 
    southPanel.add (new JLabel ("Amortization Period:")); 
    southPanel.add (new JLabel ("Type in 1, 2 or 3")); 
    southPanel.add (new JLabel()); 
    southPanel.add (new JLabel ("1. 20 years")); 
    southPanel.add (new JLabel ("2. 25 years")); 
    southPanel.add (new JLabel ("3. 30 years")); 
    final JTextField amortField = new JTextField(); 
    southPanel.add (amortField); 
    southPanel.add (new JLabel()); 
    southPanel.add (new JLabel()); 
    //To add a blank line in frame, added three blank JLabels because it is 3 horiontal for grid layout 
    southPanel.add (new JLabel()); 
    southPanel.add (new JLabel()); 
    southPanel.add (new JLabel()); 
    southPanel.add (new JButton ("Clear Information")); 
    southPanel.add (new JLabel()); 
    JButton nextButton = new JButton ("Next"); 
    southPanel.add (nextButton); 

    frame.getContentPane().add (southPanel, BorderLayout.SOUTH); 


    frame.pack(); 
    frame.setVisible (true); 


    nextButton.addActionListener (this); 

} 


public static void main (String[] args) 
{ 
    MortgageCalculator mainApp = new MortgageCalculator(); 
} 


public void actionPerformed (ActionEvent e) 
{ 
    //Gets the personal information from the text fields 
    String name; 
    int age, payment, amort; 
    double income, price, downPay, interestRate; 

    name = nameField.getText(); 
    age = Integer.parseInt (ageField.getText()); 
    income = Double.parseDouble (incomeField.getText()); 
    price = Double.parseDouble (priceField.getText()); 
    downPay = Double.parseDouble (downPayField.getText()); 
    interestRate = Double.parseDouble (interestRateField.getText()); 
    payment = Integer.parseInt (paymentField.getText()); 
    amort = Integer.parseInt (amortField.getText()); 

    interestRate = interestRate/100; 


    //Output frame 
    JFrame frame2 = new JFrame(); 
    frame2.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); 
    frame2.setSize (new Dimension (300, 250)); 
    frame2.setTitle ("Mortgage Calculator"); 
    frame2.getContentPane().setLayout (new BorderLayout()); 

    JPanel westPanel2 = new JPanel (new GridLayout (3, 1)); 
    JLabel nameLabel = new JLabel ("Name: " + name); 
    westPanel2.add (nameLabel); 
    JLabel ageLabel = new JLabel ("Age: " + age); 
    westPanel2.add (ageLabel); 
    JLabel incomeLabel = new JLabel ("Yearly Income: $" + income); 
    westPanel2.add (incomeLabel); 
    frame2.getContentPane().add (westPanel2, BorderLayout.WEST); 

    JPanel centerPanel2 = new JPanel (new GridLayout (3, 1)); 
    JLabel priceLabel = new JLabel (" Price of property: $" + price); 
    centerPanel2.add (priceLabel); 
    JLabel downPayLabel = new JLabel (" Down Payment: $" + downPay); 
    centerPanel2.add (downPayLabel); 
    JLabel interestRateLabel = new JLabel (" Interest Rate: " + income); 
    centerPanel2.add (interestRateLabel); 
    frame2.getContentPane().add (centerPanel2, BorderLayout.CENTER); 


    double interest, numerator, l, denominator, payPerPeriod, initialP, mortgageYearly; 
    if (payment == 1) 
    { 
     interest = 1 + interestRate/52; 
     if (amort == 1) 
     { 
      l = Math.pow (interest, 20 * 52); 
      numerator = l * interest; 
      denominator = l - 1; 
      initialP = price - downPay; 
      payPerPeriod = (numerator/denominator) * initialP; 
     } 
     else if (amort == 2) 
     { 
      l = Math.pow (interest, 25 * 52); 
      numerator = l * interest; 
      denominator = l - 1; 
      initialP = price - downPay; 
      payPerPeriod = (numerator/denominator) * initialP; 
     } 
     else // 3. amort30 
     { 
      l = Math.pow (interest, 30 * 52); 
      numerator = l * interest; 
      denominator = l - 1; 
      initialP = price - downPay; 
      payPerPeriod = (numerator/denominator) * initialP; 
     } 
     mortgageYearly = payPerPeriod * 52; 
    } 
    else if (payment == 2) 
    { 
     interest = 1 + interestRate/26; 
     if (amort == 1) 
     { 
      l = Math.pow (interest, 20 * 26); 
      numerator = l * interest; 
      denominator = l - 1; 
      initialP = price - downPay; 
      payPerPeriod = (numerator/denominator) * initialP; 
     } 
     else if (amort == 2) 
     { 
      l = Math.pow (interest, 25 * 26); 
      numerator = l * interest; 
      denominator = l - 1; 
      initialP = price - downPay; 
      payPerPeriod = (numerator/denominator) * initialP; 
     } 
     else // 3. amort30 
     { 
      l = Math.pow (interest, 30 * 26); 
      numerator = l * interest; 
      denominator = l - 1; 
      initialP = price - downPay; 
      payPerPeriod = (numerator/denominator) * initialP; 
     } 
     mortgageYearly = payPerPeriod * 26; 


    } 
    else //3. monthly payment 
    { 
     interest = 1 + interestRate/12; 
     if (amort == 1) 
     { 
      l = Math.pow (interest, 20 * 12); 
      numerator = l * interest; 
      denominator = l - 1; 
      initialP = price - downPay; 
      payPerPeriod = (numerator/denominator) * initialP; 
     } 
     else if (amort == 2) 
     { 
      l = Math.pow (interest, 25 * 12); 
      numerator = l * interest; 
      denominator = l - 1; 
      initialP = price - downPay; 
      payPerPeriod = (numerator/denominator) * initialP; 
     } 
     else // 2. amort30 
     { 
      l = Math.pow (interest, 30 * 12); 
      numerator = l * interest; 
      denominator = l - 1; 
      initialP = price - downPay; 
      payPerPeriod = (numerator/denominator) * initialP; 

     } 
     mortgageYearly = payPerPeriod * 12; 
    } 


    JPanel eastPanel2 = new JPanel (new GridLayout (3, 1)); 
    JLabel payTotalLabel = new JLabel (" Payment Total: $" + initialP); 
    eastPanel2.add (priceLabel); 
    JLabel payPerPeriodLabel = new JLabel (" Payment per period: $" + payPerPeriod); 
    eastPanel2.add (payPerPeriodLabel); 

    frame2.getContentPane().add (eastPanel2, BorderLayout.EAST); 


    JPanel southPanel2 = new JPanel (new GridLayout (2, 1)); 
    double minimumIncome = mortgageYearly/0.28; 
    JLabel minimumLabel = new JLabel (" Minimum Yearly Income: $" + minimumIncome); 
    eastPanel2.add (priceLabel); 

    if (minimumIncome > income) 
    { 
     JLabel qualifiedLabel = new JLabel ("You are not qualified for the mortgage"); 
     eastPanel2.add (qualifiedLabel); 
    } 
    else 
    { 
     JLabel qualifiedLabel = new JLabel ("You are qualified for the mortgage"); 
     eastPanel2.add (qualifiedLabel); 
    } 


    frame2.getContentPane().add (eastPanel2, BorderLayout.EAST); 



    frame2.pack(); 
    frame2.setVisible (true); 



} 

}

回答

0

此錯誤是一個簡單的,但我可以看到它的原因你絆倒。基本上,您所有的field變量,如nameFieldageField都被定義爲您班級頂部的String。在此行中更改String

public String nameField, ageField, incomeField, priceField, downPayField, interestRateField, paymentField, amortField; 

JTextField。然後,在你的主要方法中,而不是像這樣定義每個字段: final JTextField incomeField = new JTextField();

取而代之:incomeField = new JTextField();

相關問題