有人可以帮我正确地做这些组合框吗?我迷失了

时间:2017-12-04 13:08:34

标签: java jcombobox jgrasp

需要有关此计划的帮助。我所做的一切似乎都不起作用,即使我没有任何错误,它也只是向我显示了同样的事情。 cheg上的人给我发了他们对代码的修改,他们仍然没有工作。

您将前往世界各地旅行,需要一个程序来帮助确定其他国家/地区的成本是多少美元。您计划访问加拿大,欧洲,日本,澳大利亚,印度和墨西哥的几个国家/地区,因此您的计划必须适用于这些国家/地区的货币。 CurrencyConverter.java和RatePanel.java文件包含执行此转换的程序框架。完成如下: CurrencyPanel目前只包含两个组件 - 标题的JLabel和显示计算结果的JLabel。它还包含两个并行数组 - 一个是货币名称数组(一个字符串数组),另一个是相应汇率的数组(以美元计算的一个货币单位的值)。编译并运行程序以查看它的外观(不多!!)。 添加组合框以允许用户选择货币。构造函数的参数应该是货币名称的数组。请注意,第一个货币名称实际上是对用户的指令,因此不需要另外的标签。 在ComboListener中修改actionPerformed,以便将index设置为所选项的索引。 测试你到目前为止所拥有的。它应该显示给定货币的一个单位是美元。 现在添加一个文本字段(和标签),以便用户可以输入所选货币的项目成本。您需要更新ComboListener,以便它从文本字段中获取此值并计算并显示等值的美元金额。 测试你的程序。 修改布局以创建更具吸引力的GUI(建议:使用框布局)。

    // ******************************************************************
    //   RatePanel.java
    //
    //   Panel for a program that converts different currencies to
    //   U.S. Dollars
    // ******************************************************************

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

    public class RatePanel extends JPanel
    {
        private JComboBox currencyCombo;

        private double[] rate;          // exchange rates
        private String[] currencyName;
        private JLabel result;

        // ------------------------------------------------------------
       //  Sets up a panel to convert cost from one of 6 currencies
       //  into U.S. Dollars. The panel contains a heading, a text
       //  field for the cost of the item, a combo box for selecting
       //  the currency, and a label to display the result.
       // ------------------------------------------------------------
       public RatePanel ()
       {
            JLabel title = new JLabel ("How much is that in dollars?");
            title.setAlignmentX (Component.CENTER_ALIGNMENT);
            title.setFont (new Font ("Helvetica", Font.BOLD, 20));

            // Set up the arrays for the currency conversions
            currencyName = new String[] {"Select the currency..",
                                         "European Euro", "Canadian Dollar",
                                         "Japanese Yen", "Australian Dollar", 
                                         "Indian Rupee", "Mexican Peso"};
            rate = new double [] {0.0, 0.948968, 0.646920,
                                   0.00803616, 0.562082,
                                   0.0204441, 0.103735};


           result = new JLabel (" U.S. Dollars ????? ");


           add (title);

           add (result);

       }


         // ******************************************************
        //   Represents an action listener for the combo box.
        // ******************************************************
       private class ComboListener implements ActionListener
       {
           // --------------------------------------------------
           //   Determines which currency has been selected and
           //   the value in that currency then computes and
           //   displays the value in U.S. Dollars.
           // --------------------------------------------------
           public void actionPerformed (ActionEvent event)
           {
                int index = 0;
                result.setText ("1 " + currencyName[index] + 
                               " = " + rate[index] + " U.S. Dollars");
           }
       }
    }

主程序

      // *****************************************************************
      // File name: CurrencyConverter.java
      // Name: 
      // Purpose: Computes the dollar value of the cost of an item in 
      // another currency
      // *****************************************************************

    import java.awt.*; 
    import javax.swing.*;
    public class CurrencyConverter
    {
         public static void main(String[] args)
    {
        JFrame frame = new JFrame("Currency Converter");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        RatePanel ratePanel = new RatePanel();
        frame.getContentPane().add(ratePanel);
        frame.pack();
        frame.setVisible(true);

     }
   }

1 个答案:

答案 0 :(得分:0)

根据rate中的getSelectedIndex,获取jComboBox数组中的相应值。

物业:

  • 您有jTextField用户输入所需金额
  • 您有一个货币下拉菜单
  • 您有一个用户可以点击的按钮
  • 您还有另一个显示结果的jTextField

按钮的ActionPerformed方法可以查看您的rate数组:

double[] rate = new double[]{0.948968, 0.646920,
            0.562082, 0.0204441};

然后进行类似的计算:

double result = Double.parseDouble(jTextField2.getText()) * rate[jComboBox1.getSelectedIndex()];

并在jTextField

中打印它(为方便起见,我将其四舍五入到小数点后两位)
jTextField1.setText("Result: "+(String.format("%.2f", result)));

<强>输入:

  

55.23

<强>输出:*

  

Dropdown1 - 52.41

     

Dropdown2 - 35.73

     

Dropdown3 - 31.04

     

Dropdown4 - 1.13

*这只是基于此示例中rate数组中的值