2017-04-20 163 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