2016-06-19 2 views
2

나는 수업을위한 프로그램을 쓰고 있는데, 그 모든 것들에 관해서는 잘 알고 있지만, 실제로는 혼란 스럽다.액션 이벤트 내의 지역 찾기

저는 플로어 용 시스템을 만들어야 만 사람이 바닥 유형을 선택하고 바닥의 길이와 너비를 입력하고 주문 요약을 계산하고 산출 할 수 있습니다.

는 지금, 나는

내 교수는 심지어 그녀의 방향과 매우 모호 (그리고 심지어 그것 때문에 데이터베이스 연결을 시작하지 않았습니다.)이 모든하지만 계산 올바른을 얻을 수 있어요 그녀의 질문에 대한 답변, 그래서 내가 여기서 시도 할 것이라고 생각했던 마지막 도랑 노력으로.

나는 내 인생을 생각할 수 없으므로 어떤 도움을 주셔서 감사합니다.
을 :

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); 

    } 

} 

답변

0

나는 변경해야 할 두 가지 기본적인 것들을 볼 수 있습니다. 이 컴파일되지 않습니다 (floorSize는 double 여야합니다)

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

b. floorSize의 계산은 ChangeListener에 의해 트리거되어서는 안됩니다 (값 입력 전에 계산이 수행됨). "Order Summary"JButton을 사용하여 계산을 시작하십시오.

다음은 코드의 작동 버전입니다. 내 의견보기 :

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); 

     } 
    }