2017-04-20 5 views
2

これは私がプログラミングの第3週目であり、私の最初の質問です。私はこのプログラムに所与の数の最小変化を計算させ、計算ボタンをクリックした後に各コインの金額を表示する必要がある課題を持っています。JLabelで変数を出力する方法

私の質問は、計算を配置する必要があります。また、結果の変数をGUIの右側の四半期/二重/ニックル/ペニーのJLabelフィールドに出力する方法を教えてください。

パッケージmincoinsgui;

import java.awt.*; 
import javax.swing.*; 
import java.awt.event.*; 

class MinCoinsGui extends JFrame 
{ 
//init 

    private static final int QUARTERS = 25; 
    private static final int DIMES = 10; 
    private static final int NICKELS = 5; 
    private static final int PENNIES = 1; 

    int quarters = 0; 
    int dimes = 0; 
    int nickels = 0; 
    int pennies = 0; 
    int change = 0; 
//text field 
    private JTextField changeTF = new JTextField(2); 

//main method 
    public static void main(String[] args) 
    { 
//instantiate window object 
     MinCoinsGui window = new MinCoinsGui(); 
     window.setVisible(true); 
    } 

    //contructor method 
    public MinCoinsGui() 
    { 
     // 1. Create/initialize components 
     JButton calculateBtn = new JButton("Calculate"); 
     calculateBtn.addActionListener(new CalculateBtnListener()); 

//  JButton clearBtn = new JButton("Clear"); 
//  clearBtn.addActionListener(new ClearBtnListener()); 
     changeTF.setEditable(true); 

     // 2. Create panel panel/set grid layout 
     JPanel panel = new JPanel(); 
     panel.setLayout(new GridLayout(6, 2, 2, 2)); 

     // 3. Add components to panel panel 
     panel.add(new JLabel("Enter Change (1-99):")); 
     panel.add(changeTF); 
     panel.add(new JLabel("Quarters")); 
     panel.add(new JTextField(quarters)); 
     panel.add(new JLabel("Dimes")); 
     panel.add(new JTextField(dimes)); 
     panel.add(new JLabel("Nickels")); 
     panel.add(new JTextField(nickels)); 
     panel.add(new JLabel("Pennies")); 
     panel.add(new JTextField(pennies)); 
     panel.add(calculateBtn); 
     //content.add(clearBtn); 

     //set window (JFrame) characteristics 
     setContentPane(panel); 
     //do layout 
     pack(); 
     setTitle("Minimum Coins"); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     //center window 
     setLocationRelativeTo(null); 

    } 

    //CalculateBtnListener 
    class CalculateBtnListener implements ActionListener 
    { 

     public void actionPerformed(ActionEvent e) 
     { 
      String dyStr = changeTF.getText(); 
      change = Integer.parseInt(dyStr); 
      while (change != 0) 
      { 
       while (change >= 25) 
       { //Subtact & Count Quarters 
        change = change - QUARTERS; 
        quarters++; 
       } //Subtract & Count Dimes 
       while (change >= 10) 
       { 
        change = change - DIMES; 
        dimes++; 
       } //Subtract & Count Nickels 
       while (change >= 5) 
       { 
        change = change - NICKELS; 
        nickels++; 
       } 
       pennies = change; 
      } 

     } 
    } 
} 
+0

答えを編集して、結果をJLabelsに出力する方法を表示できるようにしました。それが助けて欲しい。 – Sky

答えて

1

はのJLabelを宣言changeTFフィールドあるようにあなたがchangeTFのように、インスタンスフィールドに変更したいのsが、あなたは、あなたのactionPerformed方法からそれらにアクセスすることができますJLabel:

// 3. Add components to panel panel 
quartersL = new JLabel("Quarters"); 
dimesL = new JLabel("Dimes"); 
nickelsL = new JLabel("Nickels"); 
penniesL = new JLabel("Pennies"); 

panel.add(new JLabel("Enter Change (1-99):")); 
panel.add(changeTF); 
panel.add(quartersL); 
panel.add(new JTextField(quarters)); 
panel.add(dimesL); 
panel.add(new JTextField(dimes)); 
panel.add(nickelsL); 
panel.add(new JTextField(nickels)); 
panel.add(penniesL); 
panel.add(new JTextField(pennies)); 
panel.add(calculateBtn); 
//content.add(clearBtn); 

出力のJLabelへの結果:

public void actionPerformed(ActionEvent e) 
    { 
     String dyStr = changeTF.getText(); 
     change = Integer.parseInt(dyStr); 
     while (change != 0) 
     { 
      while (change >= 25) 
      { //Subtact & Count Quarters 
       change = change - QUARTERS; 
       quarters++; 
      } //Subtract & Count Dimes 
      while (change >= 10) 
      { 
       change = change - DIMES; 
       dimes++; 
      } //Subtract & Count Nickels 
      while (change >= 5) 
      { 
       change = change - NICKELS; 
       nickels++; 
      } 
      pennies = change; 
     } 

     // Update the JLabels to display the result 
     quartersL.setText("" + quarters); 
     dimesL.setText("" + dimes); 
     nickelsL.setText("" + nickels); 
     penniesL.setText("" + pennies); 

    } 
1
私は計算を配置する必要があります

まあ、ActionListenerは出力

への結果の変数を取得する方法を

正しい場所であります

あなたはを作成する必要があります宣言でのJLabelを交換し

//init 
private JLabel quartersL, dimesL, nickelsL, penniesL;  

:あなたは

関連する問題