制作关于字母等级的计算器

时间:2015-05-25 22:34:06

标签: java user-interface actionlistener

我正在学习数学,我想制作一个计算器,告诉我在期末考试中需要考虑的每个音符,以获得每个字母等级。它在教学大纲中告诉我们,我们的笔记是由这个计算的:

MT1 - 第一个中期%26.6 MT2-第二中期%26.6 F-最终%26.6 问 - 测验%10 HW- Homeworks%10

这些等级间隔: 一个80-100 A- 75-80 B + 70-75 B 65-70 B-60-65 C + 55-60 C 50-55 C- 45-50 D + 40-45 D + 30-40 F 0-30

您在JTextFields中输入MT1,MT2,Q,HW,当您单击该按钮时,它将更新字母等级附近的jlabel。当我第一次运行代码时,它可以工作,但是当我想要更改它时,程序不会更新数字。你能帮忙吗?

Final_Calculator:

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

public class Final_Calculator extends JFrame
{

    public static void main(String[] args) 
    {
        JFrame frame = new JFrame("Final Calculator");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(new Results());
        frame.pack();
        frame.setVisible(true);
    }
}

等级:

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

public class Grades extends JPanel
{
    private JLabel l1, l2, l3, l4;
    private JTextField t1, t2, t3, t4;
    private double sum,result, MT1, MT2, Q, HW;
    private JButton button;

    public Grades() 
    {
        setPreferredSize(new Dimension(200,100));
        l1 = new JLabel("MT1");
        l2 = new JLabel("MT2");
        l3 = new JLabel("Q");
        l4 = new JLabel("HW");
        t1 = new JTextField("100");
        t2 = new JTextField("100");
        t3 = new JTextField("100");
        t4 = new JTextField("100");
        button = new JButton("Click!");

        TextListener listener = new TextListener();

        button.addActionListener(listener);

        add(l1);
        add(l2);
        add(l3);
        add(l4);
        add(t1);
        add(t2);
        add(t3);
        add(t4);
        add(button);


    }

    public double getMT1()
    {
        return Double.parseDouble(t1.getText());
    }

    public double getMT2()
    {
        return Double.parseDouble(t2.getText());
    }

    public double getQ()
    {
        return Double.parseDouble(t3.getText());
    }

    public double getHW()
    {
        return Double.parseDouble(t4.getText());
    }

    public void sum()
    {
        MT1 = getMT1();
        MT2 = getMT2();
        Q = getQ();
        HW = getHW();
        sum = (MT1 * 26.6) + (MT2 * 26.6) + (Q * 10) + (HW * 10); 
    }

    public double getA()
    {
        sum();
        result = (8000 - sum) / 26.6;
        if (result <= 0)
        {
            return 0;
        }
        return result;
    }

    public double getAminus()
    {
        sum();
        result = (7500 - sum) / 26.6;
        if (result <= 0)
        {
            return 0;
        }
        return result;
    }

    public double getBplus()
    {
        sum();
        result = (7000 - sum) / 26.6;
        if (result <= 0)
        {
            return 0;
        }
        return result;
    }

    public double getB()
    {
        sum();
        result = (6500 - sum) / 26.6;
        if (result <= 0)
        {
            return 0;
        }
        return result;
    }

    public double getBminus()
    {
        sum();
        result = (6000 - sum) / 26.6;
        if (result <= 0)
        {
            return 0;
        }
        return result;
    }

    public double getCplus()
    {
        sum();
        result = (5500 - sum) / 26.6;
        if (result <= 0)
        {
            return 0;
        }
        return result;
    }
    public double getC()
    {
        sum();
        result = (5000 - sum) / 26.6;
        if (result <= 0)
        {
            return 0;
        }
        return result;
    }
    public double getCminus()
    {
        sum();
        result = (4500 - sum) / 26.6;
        if (result <= 0)
        {
            return 0;
        }
        return result;
    }

    public double getDplus()
    {
        sum();
        result = (4000 - sum) / 26.6;
        if (result <= 0)
        {
            return 0;
        }
        return result;
    }

    public double getD()
    {
        sum();
        result = (3000 - sum) / 26.6;
        if (result <= 0)
        {
            return 0;
        }
        return result;
    }

    private class TextListener implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            Object source = e.getSource();
            if(source == button)
            {
                MT1 = Double.parseDouble(t1.getText());
                MT2 = Double.parseDouble(t2.getText());
                Q = Double.parseDouble(t3.getText());
                HW = Double.parseDouble(t4.getText());
                sum();
                getA();
                getAminus();
                getBplus();
                getB();
                getBminus();
                getCplus();
                getC();
                getCminus();
                getDplus();
                getD();
            }
        }
    }
}

结果:

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

public class Results extends JPanel 
{
    private JLabel f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,g1,g2,g3,g4,g5,g6,g7,g8,g9,g10,g11;
    private JPanel panel1, panel2;
    private Grades grades;

    public Results() 
    {
        grades = new Grades();
        setPreferredSize(new Dimension(800,800));
        setLayout(new BorderLayout());
        panel1 = new JPanel();
        panel1.setLayout(new GridLayout(11,2));
        panel1.setPreferredSize(new Dimension(200,200));
        panel2 = new JPanel();
        panel2.setPreferredSize(new Dimension(400,400));
        f1 = new JLabel("Final");
        g1 = new JLabel("Grade");
        f2 = new JLabel(Double.toString(grades.getA()));
        g2 = new JLabel("  A");
        f3 = new JLabel(Double.toString(grades.getAminus()));
        g3 = new JLabel("  A-");
        f4 = new JLabel(Double.toString(grades.getBplus()));
        g4 = new JLabel("  B+");
        f5 = new JLabel(Double.toString(grades.getB()));
        g5 = new JLabel("  B");
        f6 = new JLabel(Double.toString(grades.getBminus()));
        g6 = new JLabel("  B-");
        f7 = new JLabel(Double.toString(grades.getCplus()));
        g7 = new JLabel("  C+");
        f8 = new JLabel(Double.toString(grades.getC()));
        g8 = new JLabel("  C");
        f9 = new JLabel(Double.toString(grades.getCminus()));
        g9 = new JLabel("  C-");
        f10 = new JLabel(Double.toString(grades.getDplus()));
        g10 = new JLabel("  D+");
        f11 = new JLabel(Double.toString(grades.getD()));
        g11 = new JLabel("  D");

        panel1.add(f1);
        panel1.add(g1);
        panel1.add(f2);
        panel1.add(g2);
        panel1.add(f3);
        panel1.add(g3);
        panel1.add(f4);
        panel1.add(g4);
        panel1.add(f5);
        panel1.add(g5);
        panel1.add(f6);
        panel1.add(g6);
        panel1.add(f7);
        panel1.add(g7);
        panel1.add(f8);
        panel1.add(g8);
        panel1.add(f9);
        panel1.add(g9);
        panel1.add(f10);
        panel1.add(g10);
        panel1.add(f11);
        panel1.add(g11);
        panel2.add(grades);

        add(panel2, BorderLayout.NORTH);
        add(panel1, BorderLayout.CENTER);
    }

}

1 个答案:

答案 0 :(得分:0)

从它的外观/只工作一次,看起来你没有在点击按钮后更新标签。标签文本必须通过label.setText更新(&#34;&#34;);只是调用方法不会做任何事情。