Java Gui额外的输出清晰度

Java Gui额外的输出清晰度,java,user-interface,calculator,Java,User Interface,Calculator,我已经正确地重新编码了GUI,用户在其中输入初始余额、年利率和年数。它计算并输出长达15年的数据。即(10000,2.5,5)正确生成5个数字。现在的问题是,用户决定使用不同的输入号码再次重试,之前输出的原始5个号码保留在计算器中,第二次重试时输出新的号码。我不确定这是不是应该是这样的?还是我要清除5个原始数字 代码如下:否则,我对编码没问题,只需要一些澄清 import java.awt.event.ActionEvent; import java.awt.event.ActionListen

我已经正确地重新编码了GUI,用户在其中输入初始余额、年利率和年数。它计算并输出长达15年的数据。即(10000,2.5,5)正确生成5个数字。现在的问题是,用户决定使用不同的输入号码再次重试,之前输出的原始5个号码保留在计算器中,第二次重试时输出新的号码。我不确定这是不是应该是这样的?还是我要清除5个原始数字

代码如下:否则,我对编码没问题,只需要一些澄清

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import java.text.DecimalFormat;

public class SavingAccountFrame extends JFrame{
private static final int FRAME_WIDTH = 400;
private static final int FRAME_HEIGHT = 500;
private static final int AREA_ROWS = 10;
private static final int AREA_COLUMNS = 30;
private static final double DEFAULT_RATE = 5;
private static final double INITIAL_BALANCE = 1000;

private JLabel amountLabel1;
private JLabel amountLabel2;
private JLabel amountLabel3;
private JTextField amountField1;
private JTextField amountField2;
private JTextField amountField3;
private JButton button;
private JTextArea resultArea;
private JPanel panel;
//private BankAccount account;

public SavingAccountFrame(){
    //account = new BankAccount(INITIAL_BALANCE);
    resultArea = new JTextArea(AREA_ROWS, AREA_COLUMNS);
    resultArea.setEditable(false);
    createTextField();
    createButton();
    createPanel();
    setSize(FRAME_WIDTH, FRAME_HEIGHT);
}

private void createTextField(){
    final int FIELD_WIDTH = 10;
    amountLabel1 = new JLabel("Initial Balance: ");
    amountField1 = new JTextField(FIELD_WIDTH);
    amountField1.setText("" + 100000);
    amountLabel2 = new JLabel("Annual Rate: ");
    amountField2 = new JTextField(FIELD_WIDTH);
    amountField2.setText("" + 3.5);
    amountLabel3 = new JLabel("Number of Years: ");
    amountField3 = new JTextField(FIELD_WIDTH);
    amountField3.setText("" + 15);
}

private void createButton(){
    button = new JButton("Calculate");
    class AddInterestListener implements ActionListener{
        public void actionPerformed(ActionEvent event){
            DecimalFormat df = new DecimalFormat("0.00");
            double interest;
            double balance = Double.parseDouble(amountField1.getText());
            double rate = Double.parseDouble(amountField2.getText());
            double years = Double.parseDouble(amountField3.getText());
            for(int i = 0; i < years; i++){
                interest = balance * rate / 100;
                balance = balance + interest;
                resultArea.append("$" + df.format(balance) + "\n");
            }
        }
    }

    ActionListener listener = new AddInterestListener();
    button.addActionListener(listener);
}

private void createPanel(){
    panel = new JPanel();
    panel.add(amountLabel1);
    panel.add(amountLabel2);
    panel.add(amountLabel3);
    panel.add(amountField1);
    panel.add(amountField2);
    panel.add(amountField3);
    panel.add(button);
    JScrollPane scrollPane = new JScrollPane(resultArea);
    panel.add(scrollPane);
    add(panel);
}
}
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JLabel;
导入javax.swing.JPanel;
导入javax.swing.JTextArea;
导入javax.swing.JScrollPane;
导入javax.swing.JTextField;
导入java.text.DecimalFormat;
公共类SavingAccountFrame扩展了JFrame{
专用静态最终整型帧_宽度=400;
专用静态最终整型框架高度=500;
专用静态最终int区域_行=10;
专用静态最终int区域_列=30;
私人静态最终双默认利率=5;
私人静态最终双初始余额=1000;
私人JLabel amountLabel1;
私人JLabel amountLabel2;
私人JLabel amountLabel3;
私有JTextField amountField1;
私有JTextField amountField2;
私有JTextField amountField3;
私人按钮;
私有区域结果区;
私人JPanel小组;
//私人银行账户;
公共储蓄账户框架(){
//账户=新银行账户(初始余额);
resultArea=新的JTextArea(AREA\u行、AREA\u列);
resultArea.setEditable(false);
createTextField();
createButton();
createPanel();
设置尺寸(框宽、框高);
}
私有void createTextField(){
最终整型字段_宽度=10;
amountLabel1=新的JLabel(“初始余额:”);
amountField1=新的JTextField(字段宽度);
amountField1.setText(“+100000”);
amountLabel2=新的JLabel(“年利率:”);
amountField2=新的JTextField(字段宽度);
amountField2.setText(“+3.5”);
amountLabel3=新的JLabel(“年数:”);
amountField3=新的JTextField(字段宽度);
amountField3.setText(“+15”);
}
私有void createButton(){
按钮=新按钮(“计算”);
类AddInterestListener实现ActionListener{
已执行的公共无效操作(操作事件){
DecimalFormat df=新的DecimalFormat(“0.00”);
双重利益;
double balance=double.parseDouble(amountField1.getText());
double rate=double.parseDouble(amountField2.getText());
double years=double.parseDouble(amountField3.getText());
对于(int i=0;i
每次单击
计算
按钮时,都会将结果附加到
结果区域

你(至少)有两个选择

建立输出的
String
值,并使用
resultArea.setText
方法设置文本,该方法将清除字段并用您提供的文本替换它

private void createButton(){
    button = new JButton("Calculate");
    class AddInterestListener implements ActionListener{
        public void actionPerformed(ActionEvent event){
            DecimalFormat df = new DecimalFormat("0.00");
            double interest;
            double balance = Double.parseDouble(amountField1.getText());
            double rate = Double.parseDouble(amountField2.getText());
            double years = Double.parseDouble(amountField3.getText());
            StringBuilder sb = new StringBuilder(128);
            for(int i = 0; i < years; i++){
                interest = balance * rate / 100;
                balance = balance + interest;
                sb.append("$" + df.format(balance) + "\n");
            }
            resultArea.setText(sb.toString());
        }
    }

    ActionListener listener = new AddInterestListener();
    button.addActionListener(listener);
}

“我不确定它是不是应该这样?或者我应该清除掉5个原始数字吗?”
——它应该是你想要的样子——或者如果它是一个作业,那么它就是你的导师想要的样子。如果是后者,那么也许是时候要求澄清了。谢谢回复。我从作业中读到的只是说明如何正确计算算法,并在输入年份时使用JSCROL,这将导致文本向下滚动。谢谢回复。非常有帮助,并澄清了我在处理代码以及如何修复它。(非常感谢。)当分钟结束时,我会点击复选标记Yeah,我想我更喜欢在用户想要重试多次时清除输出的结果。
private void createButton(){
    button = new JButton("Calculate");
    class AddInterestListener implements ActionListener{
        public void actionPerformed(ActionEvent event){
            DecimalFormat df = new DecimalFormat("0.00");
            double interest;
            double balance = Double.parseDouble(amountField1.getText());
            double rate = Double.parseDouble(amountField2.getText());
            double years = Double.parseDouble(amountField3.getText());
            resultArea.setText(null);
            for(int i = 0; i < years; i++){
                interest = balance * rate / 100;
                balance = balance + interest;
                resultArea.append("$" + df.format(balance) + "\n");
            }
        }
    }

    ActionListener listener = new AddInterestListener();
    button.addActionListener(listener);
}