如何在 JLabel 中输出变量

How to output variable in JLabel

我想首先提到这只是我编程的第 3 周,也是我在这里的第一个问题。我有一个任务,我需要让这个程序计算给定数字的最小变化,并在单击计算按钮后显示每个硬币的数量。

我的问题是我需要在哪里进行计算以及如何将结果变量输出到 GUI 右侧的 quarters/dimes/nickels/pennies 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;
            }

        }
    }
}

where do I need to place the calculations

嗯,ActionListener 是正确的地方

how to get the resulting variables to output

您需要将要更改的 JLabel 设置为实例字段,例如 changeTF,然后您可以从 actionPerformed 方法访问它们,就像您是 changeTF 字段

声明 JLabel:

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

用声明的 JLabels 替换 JLabels:

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

将结果输出到 JLabels:

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

    }