2017-01-14 6 views
0

私は自動車サービスを計算するプログラムを作成しようとしていますが、実際にチェックボックスとテキストフィールドを計算する方法は分かりません。ですから、私が悩んでいるのは、顧客がそれを引かない方法を選択していない場合でも、トータルフィールドに合計を表示する方法です。合計を得るためにチェックボックスとテキストフィールドを計算する方法

import java.awt.BorderLayout; 
import java.awt.GridLayout; 
import java.awt.event.ItemEvent; 
import java.awt.event.ItemListener; 

import javax.swing.JButton; 
import javax.swing.JCheckBox; 
import javax.swing.JComboBox; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 


public class JoesAuto extends JFrame implements ItemListener { 
    private JCheckBox oilBox; 
    private JCheckBox lubeBox; 
    private JCheckBox radiatorBox; 
    private JCheckBox transBox; 
    private JCheckBox tireBox; 
    private JCheckBox inspectionBox; 
    private JCheckBox mufflerBox; 
    private JLabel partsLabel; 
    private JLabel laborLabel; 
    private JLabel totalLabel; 
    private JTextField partsField; 
    private JTextField laborField; 
    private JTextField totalField; 
    private JButton calcButton; 
    private JButton resetButton; 
    private JPanel topPanel; 
    private JPanel bottomPanel; 
    private JLabel totPrice; 
    private int totalPrice; 

    public final double OIL_CHANGE = 26.00; 
    public final double LUBE_JOB=18.00; 
    public final double RADIATOR_FLUSH=30.00; 
    public final double TRANSMISSION_FLUSH=80.00; 
    public final double INSPECTION=15.00; 
    public final double MUFFLER_REP=100.00; 
    public final double TIRE_ROTATION=20.00; 

    public JoesAuto() { 
     oilBox = new JCheckBox ("Oil Change"); 
     lubeBox = new JCheckBox ("Lube Job"); 
     radiatorBox = new JCheckBox ("Radiator Flush"); 
     transBox = new JCheckBox ("Transmission Flush"); 
     tireBox = new JCheckBox("Tire Rotation"); 
     inspectionBox = new JCheckBox("Isnpection"); 
     mufflerBox = new JCheckBox("Muffler Replacement"); 

     topPanel = new JPanel(new GridLayout(7,1)); 
     topPanel.add(oilBox); 
     topPanel.add(lubeBox); 
     topPanel.add(radiatorBox); 
     topPanel.add(transBox); 
     topPanel.add(tireBox); 
     topPanel.add(inspectionBox); 
     topPanel.add(mufflerBox); 

     bottomPanel = new JPanel (new GridLayout(3,3)); 
     laborLabel = new JLabel ("Labor"); 
     laborField = new JTextField (10); 
     partsLabel = new JLabel ("Parts"); 
     partsField= new JTextField (10); 
     totalLabel = new JLabel ("Total"); 
     totalField = new JTextField (10); 

     bottomPanel.add(laborLabel); 
     bottomPanel.add(laborField); 
     bottomPanel.add(partsLabel); 
     bottomPanel.add(partsField); 
     bottomPanel.add(totalLabel); 
     bottomPanel.add(totalField); 

     oilBox.addItemListener(this); 
     lubeBox.addItemListener(this); 
     radiatorBox.addItemListener(this); 
     transBox.addItemListener(this); 
     tireBox.addItemListener(this); 
     inspectionBox.addItemListener(this); 
     mufflerBox.addItemListener(this); 

     add(topPanel,BorderLayout.NORTH); 
     add(bottomPanel,BorderLayout.CENTER); 
     setVisible(true); 
     setSize(500,500); 
     setLocationRelativeTo(null); 

    } 
    @Override 
    public void itemStateChanged(ItemEvent e) { 
     object source = e.getSource(); 
     if(source==oilBox){ 
      totalPrice+=26; 
     } 

     totPrice.setText(totalPrice); // won't accept it 
    } 

    public static void main (String [] args) { 
     new JoesAuto(); 
    } 
} 

答えて

1

すべてのチェックボックスをループして、呼び出し元オブジェクトとは無関係に各チェックボックスイベントで呼び出す方法を記述します。

コンポーネントを反復処理する場合は、hereを参照してください。

+0

これは本当に助けになりました。ありがとうございました。 –

0

第1の問題は、JLabel: totPriceをJFrameに追加していないことです。これを行う:

totPrice = new JLabel("0"); // Set an initial value of 0. 
bottomPanel.add(totPrice); 

第2に、整数をJLabelに設定することはできません。あなたはストリングが必要です。これを行う:

totPrice.setText(totalPrice+""); 
+0

注意を払わなかった。しかし、私はそれを加えて、今働いています。ありがとうございました –

+0

@Suhaibmutawakel助けてくれれば回答を受け入れてください。 –

関連する問題