2016-06-19 13 views
2

Ich schreibe ein Programm für den Unterricht, und ich habe über alles getan, aber ein Teil, der mich wirklich verwirrt.Finding Area innerhalb eines Action-Ereignisses

Ich muss ein System für Bodenbelag erstellen, dass eine Person den Bodentyp wählen kann, geben Sie ihre Länge und Breite ihres Bodens ein und es berechnet und produziert eine Auftragszusammenfassung.

Nun, ich bin in der Lage, dies alles zu bekommen, aber die Berechnungen korrekt (und ich habe nicht einmal auf der Datenbankverbindung gestartet, weil es.)

Mein Professor in ihre Richtungen äußerst vage ist und sogar die Antworten auf ihre Fragen, so wie eine letzte Anstrengung ich dachte, ich würde es hier versuchen.

Ich kann nicht für das Leben von mir herausfinden, so dass jede Hilfe sehr geschätzt wird.

import java.awt.Dimension; 
import java.awt.FlowLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.BoxLayout; 
import javax.swing.ButtonGroup; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JRadioButton; 
import javax.swing.JTabbedPane; 
import javax.swing.JTextField; 
import javax.swing.event.ChangeEvent; 
import javax.swing.event.ChangeListener; 

public class FloorMart 
{ 

    private static JFrame frame = null; 

    private static Integer cost; 
    private static String floorSize; 
    private static String floorType; 
    private double floorLength; 
    private double floorWidth; 


    public static void main(String[] args) 
    { 

     frame = new JFrame("FloorMart"); 

     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(320, 300); 

     JTabbedPane tPane = new JTabbedPane(); 

     JPanel panel1 = new JPanel(); 
     panel1.setLayout(new FlowLayout()); 
     panel1.setPreferredSize(new Dimension(200, 200)); 

     JLabel jLabel = new JLabel(); 
     jLabel.setText("Welcome to the FloorMart ordering system! "); 
     panel1.add(jLabel); 

     JLabel jLabel1 = new JLabel(); 
     jLabel1.setText("Enter your Name: "); 
     panel1.add(jLabel1); 

     JTextField text1 = new JTextField(10); 
     panel1.add(text1); 

     JLabel jLabel2 = new JLabel(); 
     jLabel2.setText("Enter your Pnone Number: "); 
     panel1.add(jLabel2); 

     JTextField text2 = new JTextField(10); 
     panel1.add(text2); 

     tPane.addTab("Customer", panel1); 

     JPanel panel2 = new JPanel(); 
     panel2.setLayout(new FlowLayout()); 
     panel2.setPreferredSize(new Dimension(200, 200)); 

     jLabel = new JLabel(); 
     jLabel.setText("Floor Type? "); 
     panel2.add(jLabel); 

     ButtonGroup group = new ButtonGroup(); 
     JRadioButton RadioButton = new JRadioButton("Carpet - $10 per sq ft",    true); 
     panel2.add(RadioButton); 
     group.add(RadioButton); 

     JRadioButton RadioButton1 = new JRadioButton("Hardwood - $20 per sq ft"); 
     panel2.add(RadioButton1); 
     group.add(RadioButton1); 

     tPane.addTab("Floor Type", panel2); 

     JPanel panel3 = new JPanel(); 
     panel3.setLayout(new FlowLayout()); 
     panel3.setPreferredSize(new Dimension(200, 200)); 

     jLabel = new JLabel(); 
     jLabel.setText("Enter the length and width of your floor! "); 
     panel3.add(jLabel); 

     JLabel jLabel3 = new JLabel(); 
     jLabel3.setText("Enter the floor length: "); 
     panel3.add(jLabel3); 

     JTextField length = new JTextField(10); 
     panel3.add(length); 
     //length.setText(cost.toString()); // 


     JLabel jLabel4 = new JLabel(); 
     jLabel4.setText("Enter the floor width: "); 
     panel3.add(jLabel4); 

     JTextField width = new JTextField(10); 
     panel3.add(width); 
     //width.setText(cost.toString()); // 


     tPane.addTab("Floor Size", panel3); 

     JPanel panel4 = new JPanel(); 
     panel4.setLayout(new FlowLayout()); 
     panel4.setPreferredSize(new Dimension(200, 200)); 

     jLabel = new JLabel(); 
     jLabel.setText("Total Cost: "); 
     panel4.add(jLabel); 

     JTextField text3 = new JTextField(10); 
     panel4.add(text3); 

     JButton button = new JButton("Order Summary"); 
     button.addActionListener(new ActionListener() 
     { 

      @Override 
      public void actionPerformed(ActionEvent e) 
      { 
       JPanel panelNew = new JPanel(); 
       panelNew.setLayout(new BoxLayout(panelNew, BoxLayout.Y_AXIS)); 

       JLabel jLabeln = new JLabel("Order Summary"); 
       JLabel jLabeln1 = new JLabel("Customer Name: " + text1.getText()); 
       JLabel jLabeln2 = new JLabel("Phone Number: " + text2.getText()); 
       JLabel jLabeln3 = new JLabel("Floor Type: " + floorType); 
       JLabel jLabeln4 = new JLabel("Floor Area: " + floorSize); 
       JLabel jLabeln5 = new JLabel("Total: $" + new Double(cost) + "0"); 
       JLabel jLabeln6 = new JLabel("Thank you for shopping at FloorMart!"); 

       panelNew.add(jLabeln); 
       panelNew.add(jLabeln1); 
       panelNew.add(jLabeln2); 
       panelNew.add(jLabeln3); 
       panelNew.add(jLabeln4); 
       panelNew.add(jLabeln5); 
       panelNew.add(jLabeln6); 

       frame.invalidate(); 
       frame.remove(panel1);frame.remove(panel2);frame.remove(panel3); 
       frame.remove(panel4); 
       frame.remove(tPane); 

       frame.add(panelNew); 
       frame.revalidate(); 
       frame.repaint(); 

      } 


     }); 

     panel4.add(button); 
     tPane.addTab("Total", panel4); 


     ChangeListener changeListener= new ChangeListener() 
     { 
      public void stateChanged(ChangeEvent changeEvent) 
      { 

       JTabbedPane sourceTabbedPane = (JTabbedPane) changeEvent.getSource(); 
       int index = sourceTabbedPane.getSelectedIndex(); 

       if(index == 2) 
       { 
        double floorLength = Double.parseDouble(length.getText()); 
        double floorWidth = Double.parseDouble(width.getText()); 
        floorSize = floorLength * floorWidth; 
        if(RadioButton.isSelected()) 
        { 
         cost = 10; //per sq ft 
         floorType = RadioButton.getText(); 

        } 
        else if(RadioButton1.isSelected()) 
        { 
         cost = 20; //per sq ft 
         floorType = RadioButton1.getText(); 
        } 

        text3.setText(cost.toString()); 

       } 
      } 

     }; 

     tPane.addChangeListener(changeListener); 

     frame.add(tPane); 
     frame.setVisible(true); 

    } 

} 

Antwort

0

kann ich zwei grundlegende Dinge, die geändert werden muss:
ein. dies wird nicht kompiliert (floorSize sollte doppelt sein)

 String floorSize; 
    double floorLength = Double.parseDouble(length.getText()); 
    double floorWidth = Double.parseDouble(width.getText()); 
    floorSize = floorLength * floorWidth; 

b. Die Berechnung von floorSize sollte nicht vom ChangeListener ausgelöst werden (wodurch die Berechnung vor der Eingabe von Werten erfolgt). Verwenden Sie den JButton "Order Summary", um die Berechnung auszulösen.

Hier ist eine funktionierende Version des Codes. Siehe meine Kommentare:

import java.awt.Dimension; 
    import java.awt.FlowLayout; 
    import java.awt.event.ActionEvent; 
    import java.awt.event.ActionListener; 

    import javax.swing.BoxLayout; 
    import javax.swing.ButtonGroup; 
    import javax.swing.JButton; 
    import javax.swing.JFrame; 
    import javax.swing.JLabel; 
    import javax.swing.JPanel; 
    import javax.swing.JRadioButton; 
    import javax.swing.JTabbedPane; 
    import javax.swing.JTextField; 

    public class FloorMart 
    { 

     private static JFrame frame = null; 

     private static Integer cost; //better use int 

     ////////////////////////////////////// 
     //changed from string to double 
     private static double floorSize; 
     //////////////////////////////////// 
     private static String floorType; 
     private double floorLength; 
     private double floorWidth; 


     public static void main(String[] args) 
     { 

      frame = new JFrame("FloorMart"); 

      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      frame.setSize(320, 300); 

      JTabbedPane tPane = new JTabbedPane(); 

      JPanel panel1 = new JPanel(); 
      panel1.setLayout(new FlowLayout()); 
      panel1.setPreferredSize(new Dimension(200, 200)); 

      JLabel jLabel = new JLabel(); 
      jLabel.setText("Welcome to the FloorMart ordering system! "); 
      panel1.add(jLabel); 

      JLabel jLabel1 = new JLabel(); 
      jLabel1.setText("Enter your Name: "); 
      panel1.add(jLabel1); 

      JTextField text1 = new JTextField(10); 
      panel1.add(text1); 

      JLabel jLabel2 = new JLabel(); 
      jLabel2.setText("Enter your Pnone Number: "); 
      panel1.add(jLabel2); 

      JTextField text2 = new JTextField(10); 
      panel1.add(text2); 

      tPane.addTab("Customer", panel1); 

      JPanel panel2 = new JPanel(); 
      panel2.setLayout(new FlowLayout()); 
      panel2.setPreferredSize(new Dimension(200, 200)); 

      jLabel = new JLabel(); 
      jLabel.setText("Floor Type? "); 
      panel2.add(jLabel); 

      ButtonGroup group = new ButtonGroup(); 
      JRadioButton RadioButton = new JRadioButton("Carpet - $10 per sq ft",    true); 
      panel2.add(RadioButton); 
      group.add(RadioButton); 

      JRadioButton RadioButton1 = new JRadioButton("Hardwood - $20 per sq ft"); 
      panel2.add(RadioButton1); 
      group.add(RadioButton1); 

      tPane.addTab("Floor Type", panel2); 

      JPanel panel3 = new JPanel(); 
      panel3.setLayout(new FlowLayout()); 
      panel3.setPreferredSize(new Dimension(200, 200)); 

      jLabel = new JLabel(); 
      jLabel.setText("Enter the length and width of your floor! "); 
      panel3.add(jLabel); 

      JLabel jLabel3 = new JLabel(); 
      jLabel3.setText("Enter the floor length: "); 
      panel3.add(jLabel3); 

      JTextField length = new JTextField(10); 
      panel3.add(length); 
      //length.setText(cost.toString()); // 


      JLabel jLabel4 = new JLabel(); 
      jLabel4.setText("Enter the floor width: "); 
      panel3.add(jLabel4); 

      JTextField width = new JTextField(10); 
      panel3.add(width); 
      //width.setText(cost.toString()); // 


      tPane.addTab("Floor Size", panel3); 

      JPanel panel4 = new JPanel(); 
      panel4.setLayout(new FlowLayout()); 
      panel4.setPreferredSize(new Dimension(200, 200)); 

      jLabel = new JLabel(); 
      jLabel.setText("Total Cost: "); 
      panel4.add(jLabel); 

      JTextField text3 = new JTextField(10); 
      panel4.add(text3); 

      JButton button = new JButton("Order Summary"); 
      button.addActionListener(new ActionListener() 
      { 

       @Override 
       public void actionPerformed(ActionEvent e) 
       { 

        ////////////////////////////////////////////////////////////// 
        //calculation moved to here 
        double floorLength = Double.parseDouble(length.getText()); 
        double floorWidth = Double.parseDouble(width.getText()); 
        floorSize = floorLength * floorWidth; 
        if(RadioButton.isSelected()) 
        { 
         cost = 10; //per sq ft 
         floorType = RadioButton.getText(); 

        } 
        else if(RadioButton1.isSelected()) 
        { 
         cost = 20; //per sq ft 
         floorType = RadioButton1.getText(); 
        } 

        text3.setText(cost.toString()); 
        ////////////////////////////////////////////////////////////// 

        JPanel panelNew = new JPanel(); 
        panelNew.setLayout(new BoxLayout(panelNew, BoxLayout.Y_AXIS)); 

        JLabel jLabeln = new JLabel("Order Summary"); 
        JLabel jLabeln1 = new JLabel("Customer Name: " + text1.getText()); 
        JLabel jLabeln2 = new JLabel("Phone Number: " + text2.getText()); 
        JLabel jLabeln3 = new JLabel("Floor Type: " + floorType); 
        JLabel jLabeln4 = new JLabel("Floor Area: " + floorSize); 
        /////////////////////////////////////////////////////////////////////////// 
        // changed JLabel jLabeln5 = new JLabel("Total: $" + new Double(cost*floorSize) + "0"); 
        //to: 
        JLabel jLabeln5 = new JLabel("Total: $" + new Double(cost*floorSize) + "0"); 
        /////////////////////////////////////////////////////////////////////////// 
        JLabel jLabeln6 = new JLabel("Thank you for shopping at FloorMart!"); 

        panelNew.add(jLabeln); 
        panelNew.add(jLabeln1); 
        panelNew.add(jLabeln2); 
        panelNew.add(jLabeln3); 
        panelNew.add(jLabeln4); 
        panelNew.add(jLabeln5); 
        panelNew.add(jLabeln6); 

        frame.invalidate(); 
        frame.remove(panel1);frame.remove(panel2);frame.remove(panel3); 
        frame.remove(panel4); 
        frame.remove(tPane); 

        frame.add(panelNew); 
        frame.revalidate(); 
        frame.repaint(); 

       } 


      }); 

      panel4.add(button); 
      tPane.addTab("Total", panel4); 

      ///////////////////////////////// 
      //removed ChangeListener 
      //////////////////////////////// 

      frame.add(tPane); 
      frame.setVisible(true); 

     } 
    } 
Verwandte Themen