2017-05-11 31 views
-1

Ich bekomme den Fehler "* Operator für JTextField, Double" für den Listener eines Projekts. Es ist ein Java-GUI-Projekt, wir müssen zwei Textfelder haben, eines für "Stunden", das andere "Rate". Wir benötigen auch eine Combobox, in der der Mitarbeitertyp und eine Berechnungsschaltfläche aufgelistet sind. Ich bekomme den Fehler in Switch-Fall 2 (Pay = Stunden * PayRate;) unter dem Hörer. Wie konvertiere ich den Text, damit ich Stunden mit payRate multiplizieren kann?Java * Operator nicht definiert für JTextField, Double

public class EmployeeControls extends JPanel 
{ 
private JLabel cost, inputLabel1, inputLabel2, outputLabel, resultLabel; 
private JTextField hours, rate; 
private JComboBox employeeCombo; 
private JButton calculateButton; 
private double pay, bonus, payRate; 

public EmployeeControls() 
{ 
    inputLabel1 = new JLabel("Hours:"); 
    inputLabel2 = new JLabel("Rate:"); 
    outputLabel = new JLabel("Pay:"); 
    resultLabel = new JLabel("------"); 
    hours = new JTextField(2); 
    rate = new JTextField(5); 
    hours.addActionListener(new CalcListener()); 
    rate.addActionListener(new CalcListener()); 

    String[] employeeTypes = {"Select an Employee 
    Type","Salaried","Hourly","Volunteer"}; 


    employeeCombo = new JComboBox(employeeTypes); 

    calculateButton = new JButton("Calculate Pay"); 

    cost = new JLabel("Pay: " + pay); 

    setPreferredSize(new Dimension (400, 100)); 
    setBackground(Color.cyan); 

    add(employeeCombo); 
    add(calculateButton); 

    calculateButton.addActionListener(new CalcListener()); 

    } 

    private class CalcListener implements ActionListener 
    { 
    public void actionPerformed (ActionEvent event) 
    { 

     String text = rate.getText(); 
     String strRate = Double.toString(payRate); 

     String text2 = hours.getText(); 
     String strHours = Double.toString(hours); 


     int employeeType = employeeCombo.getSelectedIndex(); 

     switch(employeeType) 
     { 
      case 0: 
       JOptionPane.showMessageDialog(null, "Select an Employee 
     Type"); 
       break; 
      case 1: 
       pay = (2000.00 + bonus); 
       JOptionPane.showMessageDialog(null, "Enter bonus amount"); 
       break; 
      case 2: 
       pay = hours * payRate; 
       break; 
      case 3: 
       pay = 0.00; 
       break; 

     } 
     cost.setText("Cost = " + pay); 
    } 

    } 
    } 
+2

'pay = Stunden * payRate' -' Stunden 'ist ein' JTextField', wie können Sie es mehrfach verdoppeln? – MadProgrammer

+0

'String strHours = Double.toString (Stunden);' wird Ihnen auch Probleme aus ähnlichen Gründen geben – MadProgrammer

+0

@MadProgrammer wir sind verpflichtet, ein Textfeld zu verwenden, eine Payrate muss eine Dezimalzahl haben, so glaube ich nicht, ich kann benutze Ganzzahl. Welchen Typ würdest du benutzen? – lorac1969

Antwort

3

Sie versuchen, das JTextField zu multiply: es macht keinen Sinn.

Um zu beheben, erhalten Sie den Wert des Textfelds mit hours.getText() und dann zu int mit Integer.parseInt(hours.getText()) zu analysieren. So wird es:

pay = Integer.parseInt(hours.getText()) * payRate 
+0

Hi Ollaw, danke für die Spitze. Wir sind verpflichtet, die Zahlung aus einem Textfeld zu bekommen, wie würdest du es schreiben? – lorac1969

+0

Auf die gleiche Weise erhalten Sie den Text des textField mit .getText(), aber diese Methode gibt einen String zurück, so dass Sie ihn in den gewünschten Typ umwandeln, zum Beispiel mit int müssen Sie Integer.parseInt (value) mit machen Double Double.parseDouble (Wert) und so weiter – Ollaw

Verwandte Themen