2017-04-20 66 views
2

我想提一提,這只是我的第三週編程和我的第一個問題。我有一個任務,我需要讓這個程序計算給定數字的最小變化,並在點擊計算按鈕後顯示每個硬幣的數量。如何在JLabel中輸出變量

我的問題是我需要在哪裏放置計算以及如何獲得結果變量輸出到GUI右側的宿舍/硬幣/鎳幣/便士JLabel字段。

package 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:

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

與宣佈更換的JLabel的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是正確的位置

如何讓結果變量輸出

您需要製作你想更換成實例字段,如個S,那麼你可以從你的actionPerformed方法來訪問它們,就像你是changeTF