plMortgage计算器的GUI问题很多 [英] plMortgage Calculator GUI Issue with A Lot

查看:94
本文介绍了plMortgage计算器的GUI问题很多的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

此应用程序存在很多问题.我整天待在这里,无法弄清楚.我有一个用于类的Java应用程序.我遇到的问题是尝试将JRadioButtons分配给数组中的变量,然后将其传递给公式.如果有人可以提供帮助,我将不胜感激.

I am having a lot of issues with this application. I have been at this all day and cannot get this figured out. I have a Java application that is for a class. The issue that I am having is trying to get the JRadioButtons assigned to variables in the array then passing them into the formula. If someone could help I would appreciate it a lot.

import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.text.NumberFormat;

import javax.swing.*;
import javax.swing.border.*;
import javax.swing.JRadioButton;

public class MortgageCalculatorGUI8 extends JFrame {

    JPanel panel1 = new JPanel();

    double Principal;
    double [] Interest = {5.35, 5.5, 5.75};
    double temp_Interest;
    int [] Length = {7, 15, 30};
    int temp_Length;
    boolean ok = false;


    public MortgageCalculatorGUI8(){

        getContentPane ().setLayout (null);
        setSize (400,400);

        panel1.setLayout (null);
        panel1.setBounds (0, 0, 2000, 800);
        add (panel1);

        JLabel mortgageLabel = new JLabel("Mortgage Amount $", JLabel.LEFT);
        mortgageLabel.setBounds (15, 15, 150, 30);
        panel1.add (mortgageLabel);

        final JTextField mortgageText = new JTextField(10);
        mortgageText.setBounds (130, 15, 150, 30);
        panel1.add (mortgageText);

        JLabel termLabel = new JLabel("Mortgage Term (Years)", JLabel.LEFT);
        termLabel.setBounds (340, 40, 150, 30);
        panel1.add (termLabel);

        JTextField termText = new JTextField(3);
        termText.setBounds (340, 70, 150, 30);
        panel1.add (termText);

        JLabel intRateLabel = new JLabel("Interest Rate (%)", JLabel.LEFT);
        intRateLabel.setBounds (340, 94, 150, 30);
        panel1.add (intRateLabel);

        JTextField intRateText = new JTextField(5);
        intRateText.setBounds (340, 120, 150, 30);
        panel1.add (intRateText);

        JLabel mPaymentLabel = new JLabel("Monthly Payment $", JLabel.LEFT);
        mPaymentLabel.setBounds (550, 40, 150, 30);
        panel1.add (mPaymentLabel);

        JTextField mPaymentText = new JTextField(10);
        mPaymentText.setBounds (550, 70, 150, 30);
        panel1.add (mPaymentText);

//      JLabel paymentLabel = new JLabel ("Payment #");
//      JLabel balLabel = new JLabel (" Balance");
//      JLabel ytdPrincLabel = new JLabel (" Principal");
//      JLabel ytdIntLabel = new JLabel (" Interest");

        JTextArea textArea = new JTextArea(10, 31);
        textArea.setBounds (550, 100, 150, 30);
        panel1.add (textArea);
        JScrollPane scroll = new JScrollPane(textArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        scroll.setBounds (450, 200, 300, 150);
        panel1.add (scroll);


    public void rbuttons(){

        JLabel tYears = new JLabel("Years of Loan Amount");
        tYears.setBounds (30, 35, 150, 30);
        panel1.add (tYears);
        JRadioButton b7Yr = new JRadioButton("7 Years",false);
        b7Yr.setBounds (30, 58, 150, 30);
        panel1.add (b7Yr);
        JRadioButton b15Yr = new JRadioButton("15 Years",false);
        b15Yr.setBounds (30, 80, 150, 30);
        panel1.add (b15Yr);
        JRadioButton b30Yr = new JRadioButton("30 Years",false);
        b30Yr.setBounds (30, 101, 150, 30);
        panel1.add (b30Yr);


        JLabel tInterest = new JLabel("Interest Rate Of the Loan");
        tInterest.setBounds (175, 35, 150, 30);
        panel1.add(tInterest);
        JRadioButton b535Int = new JRadioButton("5.35% Interest",false);
        b535Int.setBounds (178, 58, 150, 30);
        panel1.add (b535Int);
        JRadioButton b55Int = new JRadioButton("5.5% Interest",false);
        b55Int.setBounds (178, 80, 150, 30);
        panel1.add (b55Int);
        JRadioButton b575Int = new JRadioButton("5.75% Interest",false);
        b575Int.setBounds (178, 101, 150, 30);
        panel1.add (b575Int);
    }

        JButton calculateButton = new JButton("CALCULATE");
        calculateButton.setBounds (30, 400, 120, 30);
        panel1.add (calculateButton);

        calculateButton.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e)
            {


                    if(e.getSource () == b7Yr){
                        b7Yr = Length[0];
                    }
                    if(e.getSource () == b15Yr){
                        b15Yr = Length[1];
                    }
                    if(e.getSource () == b30Yr){
                        b30Yr = Length[2];
                    }
                    if(e.getSource () == b535Int){
                        b535Int = Interest[0];
                    }
                    if(e.getSource () == b55Int){
                        b55Int = Interest[1];
                    }
                    if(e.getSource () == b575Int){
                        b575Int = Interest[2];
                    }


                double Principal;
//              double [] Interest;
//              int [] Length;
                double M_Interest = Interest /(12*100);
                double Months = Length  * 12;

                Principal = Double.parseDouble (mortgageText.getText());

                double M_Payment = Principal * ( M_Interest / (1 - (Math.pow((1 + M_Interest), - Months))));

                NumberFormat Money = NumberFormat.getCurrencyInstance();



            }
            });




        JButton clearButton = new JButton("CLEAR");
        clearButton.setBounds (160, 400, 120, 30);
        panel1.add (clearButton);

        clearButton.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e)
            {
                mortgageText.setText (null);
                b7Yr.setSelected (false);
                b15Yr.setSelected (false);
                b30Yr.setSelected (false);
                b535Int.setSelected (false);
                b55Int.setSelected (false);
                b575Int.setSelected (false);
            }
            });


        JButton exitButton = new JButton("EXIT");
        exitButton.setBounds (290, 400, 120, 30);
        panel1.add (exitButton);

        exitButton.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e)
            {
                System.exit(0);
            }
            });


    }

    public static void main(String[] args) {

        MortgageCalculatorGUI8 frame = new MortgageCalculatorGUI8();
        frame.setBounds (400, 200, 800, 800);
        frame.setTitle ("Mortgage Calculator 1.0.4");
        frame.setDefaultCloseOperation (EXIT_ON_CLOSE);
        frame.setVisible (true);



    }
}

推荐答案

拍摄,我将以我在上一条评论中的意思为例向您展示:

Shoot, I'll show you in an example of what I meant in my last comment:

我自己,将为我使用的每个组以及每个JRadioButtons群集的ButtonGroup对象创建一个JRadioButtons数组作为类字段.然后,在计算JButton的ActionListener中,通过遍历单选按钮数组或从ButtonGroups getSelection方法(请注意,这将返回ButtonModel对象,或者如果未选择任何内容,则返回null)来获取选定的单选按钮.

Myself, I'd create an array of JRadioButtons as a class field for each group that I used as well as a ButtonGroup object for each cluster of JRadioButtons. Then in my calculate JButton's ActionListener, I'd get the selected radiobutton by either looping through the radio button array or from the ButtonGroups getSelection method (note though that this returns a ButtonModel object or null if nothing is selected).

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

public class InfoFromRadioBtns extends JPanel {
   private static final long serialVersionUID = 1L;
   private int[] foobars = {1, 2, 5, 10, 20};
   private JRadioButton[] foobarRButtons = new JRadioButton[foobars.length];
   private ButtonGroup foobarBtnGroup = new ButtonGroup();

   public InfoFromRadioBtns() {
      // jpanel to hold one set of radio buttons
      JPanel radioBtnPanel = new JPanel(new GridLayout(0, 1));
      radioBtnPanel.setBorder(BorderFactory
               .createTitledBorder("Choose a Foobar"));

      // iterate through the radio button array creating buttons
      // and adding them to the radioBtnPanel and the
      // foobarBtnGroup ButtonGroup
      for (int i = 0; i < foobarRButtons.length; i++) {
         // string for radiobutton to dislay -- just the number
         String buttonText = String.valueOf(foobars[i]);
         JRadioButton radiobtn = new JRadioButton("foobar " + buttonText);
         radiobtn.setActionCommand(buttonText); // one way to find out which
                                                // button is selected
         radioBtnPanel.add(radiobtn); // add radiobutton to its panel
         foobarBtnGroup.add(radiobtn); // add radiobutton to its button group

         // add to array
         foobarRButtons[i] = radiobtn;
      }

      // one way to get the selected JRadioButton
      JButton getRadioChoice1 = new JButton("Get Radio Choice 1");
      getRadioChoice1.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            ButtonModel seletedModel = foobarBtnGroup.getSelection();
            if (seletedModel != null) {
               String actionCommand = seletedModel.getActionCommand();
               System.out.println("selected foobar: " + actionCommand);
            } else {
               System.out.println("No foobar selected");
            }
         }
      });

      // another way to get the selected JRadioButton
      JButton getRadioChoice2 = new JButton("Get Radio Choice 2");
      getRadioChoice2.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            String actionCommand = "";
            for (JRadioButton foobarRButton : foobarRButtons) {
               if (foobarRButton.isSelected()) {
                  actionCommand = foobarRButton.getActionCommand();
               }
            }
            if (actionCommand.isEmpty()) {
               System.out.println("No foobar selected");
            } else {
               System.out.println("selected foobar: " + actionCommand);
            }

         }
      });

      JPanel jBtnPanel = new JPanel();
      jBtnPanel.add(getRadioChoice1);
      jBtnPanel.add(getRadioChoice2);

      // make main GUI use a BordeLayout
      setLayout(new BorderLayout());
      add(radioBtnPanel, BorderLayout.CENTER);
      add(jBtnPanel, BorderLayout.PAGE_END);
   }

   private static void createAndShowUI() {
      JFrame frame = new JFrame("InfoFromRadioBtns");
      frame.getContentPane().add(new InfoFromRadioBtns());
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.pack();
      frame.setLocationRelativeTo(null);
      frame.setVisible(true);
   }

   public static void main(String[] args) {
      java.awt.EventQueue.invokeLater(new Runnable() {
         public void run() {
            createAndShowUI();
         }
      });
   }
}

无论您做什么,都不要尝试将任何这些代码复制并粘贴到您的程序中,因为它根本不会那样工作(故意).发布它只是为了说明我上面讨论的概念.

Whatever you do, don't try to copy and paste any of this code into your program, because it simply isn't going to work that way (on purpose). It was posted only to illustrate the concepts that I've discussed above.

这篇关于plMortgage计算器的GUI问题很多的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆