How to Create Currency Converter Project in Java

Java Currency Converter is a desktop application that converts one currency into another currency based on recent market prices. It is very useful for foreign exchange trade and multinational business.

About Currency Converter Project

Users can convert the following Currencies:

1. From INR (Indian Rupee) to

  • United States Dollar
  • Euro
  • Canadian Dollar
  • Japanese Yen
  • Chinese Yen
  • Bitcoin

2. From USD (United States Dollar) to

  • Indian Rupee
  • Euro
  • Canadian Dollar
  • Japanese Yen
  • Chinese Yuan
  • Bitcoin

There are many more options to convert from one currency to another

Project Prerequisites

  • Java should be installed on the machine
  • To build Currency Converter user should have basic knowledge of Java AWT (Abstract Window Toolkit) and Java Swing
  • IDE used: NetBeans 8.2

Download Java Currency Converter

Please download the source code of java currency converter project from the following link: Currency Converter Project

Steps to Create Currency Converter– Java Project

1. Import packages

In this step, we will import all the required AWT and Swing packages.

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

2. Creating User Interface

Now, its time to design the Front user layout which will be accessed by the user for conversion.

We had to make use of several components such as Label, ComboBox, Button and TextField. In Netbeans, there is facility of drag and drop components and adding functionalities in easy way it will automatically generate the code as per the requirement selected by you.

Function Definitions:

  • setLayout() : This function lets you set the layout of the Frame used in the project.
  • setBounds(x,y, width, height): This Function will let you set the dimensions of the components used in the project.
  • setFont: This function will let you set the font of your choice to the UI screen to make it attractive.
private void initComponents() {

        title = new javax.swing.JLabel();
        convert = new javax.swing.JButton();
        jLabel1 = new javax.swing.JLabel();
        convertFrom = new javax.swing.JLabel();
        convertTo = new javax.swing.JLabel();
        input = new javax.swing.JTextField();
        choiceFrom = new javax.swing.JComboBox();
        choiceTo = new javax.swing.JComboBox();
        output = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setBackground(new java.awt.Color(0, 0, 0));

        title.setFont(new java.awt.Font("Times New Roman", 1, 48)); // NOI18N
        title.setText("Techvidvan - Currency Converter");
        title.setVerifyInputWhenFocusTarget(false);

        convert.setFont(new java.awt.Font("Times New Roman", 1, 18)); // NOI18N
        convert.setText("CONVERT");
        convert.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                convertActionPerformed(evt);
            }
        });

        jLabel1.setFont(new java.awt.Font("Times New Roman", 1, 18)); // NOI18N
        jLabel1.setText("Enter Amount ");

        convertFrom.setFont(new java.awt.Font("Times New Roman", 1, 18)); // NOI18N
        convertFrom.setText("Convert From");

        convertTo.setFont(new java.awt.Font("Times New Roman", 1, 18)); // NOI18N
        convertTo.setText("Convert To");

        input.setFont(new java.awt.Font("Times New Roman", 0, 18)); // NOI18N
        input.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                inputActionPerformed(evt);
            }
        });

        choiceFrom.setFont(new java.awt.Font("Times New Roman", 1, 18)); // NOI18N
        choiceFrom.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "INR", "USD", "EUR", "CAD", "JPY", "CNY", "BTC" }));
        choiceFrom.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                choiceFromItemStateChanged(evt);
            }
        });

        choiceTo.setFont(new java.awt.Font("Times New Roman", 1, 18)); // NOI18N
        choiceTo.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "INR", "USD", "EUR", "CAD", "JPY", "CNY", "BTC" }));
        choiceTo.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                choiceToItemStateChanged(evt);
            }
        });

        output.setFont(new java.awt.Font("Times New Roman", 1, 24)); // NOI18N
        output.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        output.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));

3. Adding Listeners to the components

Adding listeners to the components will return the action specified to it when the user selects the particular component.

choiceFrom.addItemListener(this);
        choiceTo.addItemListener(this);
        convert.addActionListener(this);

4. Overriding the Listeners

There is always the need to override the listener which is being used.

//Adding Item Listener to Choice From ComboBox
private void choiceFromItemStateChanged(java.awt.event.ItemEvent evt) { }                                                                      

//Adding Item Listener to Choice To ComboBox
private void choiceToItemStateChanged(java.awt.event.ItemEvent evt) {}                      
  
//Adding Action Listener to Convert Button
private void convertActionPerformed(java.awt.event.ActionEvent evt) {                                        
                Double total;
        Double amount= Double.parseDouble(input.getText());

//Then add Functionalities in continuity

5. Adding Functionalities

  • Converting USD currency
switch (choiceFrom.getSelectedItem().toString()) {
            case "USD":
                //INR
                switch (choiceTo.getSelectedItem().toString()) {
                    case "INR":
                        total=amount*82.743;
                        output.setText(input.getText()+" USD = "+total+" INR");
                        break;
                    case "EUR":
                        total=amount*0.943;
                        output.setText(input.getText()+" USD = "+total+" EUR");
                        break;
                    case "CAD":
                        total=amount*1.351;
                        output.setText(input.getText()+" USD = "+total+" CAD");
                        break;
                    case "JPY":
                        total=amount*132.440;
                        output.setText(input.getText()+" USD = "+total+" JPY");
                        break;
                    case "CNY":
                        total=amount*6.871;
                        output.setText(input.getText()+" USD = "+total+" CNY");
                        break;
                    case "BTC":
                        total=amount*0.0000594;
                        output.setText(input.getText()+" USD = "+total+" BTC");
                        break;
                    default:
                        total=amount*1;
                        output.setText(input.getText()+" USD = "+total+" USD");
                        break;
                }
                break;
  • Converting Indian Currency
case "INR":
                //USD
                switch (choiceTo.getSelectedItem().toString()) {
                    case "USD":
                        total=amount*0.0120;
                        output.setText(input.getText()+" INR = "+total+" USD");
                        break;
                    case "EUR":
                        total=amount*0.01139;
                        output.setText(input.getText()+" INR = "+total+" EUR");
                        break;
                    case "CAD":
                        total=amount*0.0163;
                        output.setText(input.getText()+" INR = "+total+" CAD");
                        break;
                    case "JPY":
                        total=amount*1.6012;
                        output.setText(input.getText()+" INR = "+total+" JPY");
                        break;
                    case "CNY":
                        total=amount*0.083;
                        output.setText(input.getText()+" INR = "+total+" CNY");
                        break;
                    case "BTC":
                        total=amount*0.000000726;
                        output.setText(input.getText()+" INR = "+total+" BTC");
                        break;
                    default:
                        total=amount*1;
                        output.setText(input.getText()+" INR = "+total+" INR");
                        break;
                }
                break;
  • Converting EURO currency
case "EUR":
                //USD
                switch (choiceTo.getSelectedItem().toString()) {
                    case "USD":
                        total=amount*1.06057;
                        output.setText(input.getText()+" EUR = "+total+" USD");
                        break;
                    case "INR":
                        total=amount*87.74738;
                        output.setText(input.getText()+" EUR = "+total+" INR");
                        break;
                    case "CAD":
                        total=amount*1.4336;
                        output.setText(input.getText()+" EUR = "+total+" CAD");
                        break;
                    case "JPY":
                        total=amount*140.5083;
                        output.setText(input.getText()+" EUR = "+total+" JPY");
                        break;
                    case "CNY":
                        total=amount*7.2925;
                        output.setText(input.getText()+" EUR = "+total+" CNY");
                        break;
                    case "BTC":
                        total=amount*0.0000630;
                        output.setText(input.getText()+" EUR = "+total+" BTC");
                        break;
                    default:
                        total=amount*1;
                        output.setText(input.getText()+" EUR = "+total+" EUR");
                        break;
                }
                break;
  • Converting CAD currency
case "CAD":
                //USD
                switch (choiceTo.getSelectedItem().toString()) {
                    case "USD":
                        total=amount*0.7397;
                        output.setText(input.getText()+" CAD = "+total+" USD");
                        break;
                    case "INR":
                        total=amount*61.2043;
                        output.setText(input.getText()+" CAD = "+total+" INR");
                        break;
                    case "EUR":
                        total=amount*0.6975;
                        output.setText(input.getText()+" CAD = "+total+" EUR");
                        break;
                    case "JPY":
                        total=amount*98.0054;
                        output.setText(input.getText()+" CAD = "+total+" JPY");
                        break;
                    case "CNY":
                        total=amount*5.0865;
                        output.setText(input.getText()+" CAD = "+total+" CNY");
                        break;
                    case "BTC":
                        total=amount*0.0000439;
                        output.setText(input.getText()+" CAD = "+total+" BTC");
                        break;
                    default:
                        total=amount*1;
                        output.setText(input.getText()+" CAD = "+total+" CAD");
                        break;
                }
                break;
  • Converting Japanese Currency
case "JPY":
                //USD
                switch (choiceTo.getSelectedItem().toString()) {
                    case "USD":
                        total=amount*0.00754;
                        output.setText(input.getText()+" JPY = "+total+" USD");
                        break;
                    case "INR":
                        total=amount*0.6244;
                        output.setText(input.getText()+" JPY = "+total+" INR");
                        break;
                    case "EUR":
                        total=amount*0.00711;
                        output.setText(input.getText()+" JPY = "+total+" EUR");
                        break;
                    case "CAD":
                        total=amount*0.01020;
                        output.setText(input.getText()+" JPY = "+total+" CAD");
                        break;
                    case "CNY":
                        total=amount*0.051900;
                        output.setText(input.getText()+" JPY = "+total+" CNY");
                        break;
                    case "BTC":
                        total=amount*0.0000000453;
                        output.setText(input.getText()+" JPY = "+total+" BTC");
                        break;
                    default:
                        total=amount*1;
                        output.setText(input.getText()+" JPY = "+total+" JPY");
                        break;
                }
                break;
  • Converting Chinese Currency
case "CNY":
                //USD
                switch (choiceTo.getSelectedItem().toString()) {
                    case "USD":
                        total=amount*0.1454;
                        output.setText(input.getText()+" CNY = "+total+" USD");
                        break;
                    case "INR":
                        total=amount*12.0325;
                        output.setText(input.getText()+" CNY = "+total+" INR");
                        break;
                    case "EUR":
                        total=amount*0.13712;
                        output.setText(input.getText()+" CNY = "+total+" EUR");
                        break;
                    case "CAD":
                        total=amount*0.19659;
                        output.setText(input.getText()+" CNY = "+total+" CAD");
                        break;
                    case "JPY":
                        total=amount*19.26750;
                        output.setText(input.getText()+" CNY = "+total+" JPY");
                        break;
                    case "BTC":
                        total=amount*0.000008646;
                        output.setText(input.getText()+" CNY = "+total+" BTC");
                        break;
                    default:
                        total=amount*1;
                        output.setText(input.getText()+" CNY = "+total+" CNY");
                        break;
                }
                break;
  • Converting Bitcoin Currency
case "BTC":
                //USD
                switch (choiceTo.getSelectedItem().toString()) {
                    case "USD":
                        total=amount*16820.845;
                        output.setText(input.getText()+" BTC = "+total+" USD");
                        break;
                    case "INR":
                        total=amount*1391685.7254;
                        output.setText(input.getText()+" BTC = "+total+" INR");
                        break;
                    case "EUR":
                        total=amount*15860.1393;
                        output.setText(input.getText()+" BTC = "+total+" EUR");
                        break;
                    case "CAD":
                        total=amount*22738.3511;
                        output.setText(input.getText()+" BTC = "+total+" CAD");
                        break;
                    case "JPY":
                        total=amount*2228482.3907;
                        output.setText(input.getText()+" BTC = "+total+" JPY");
                        break;
                    case "CNY":
                        total=amount*115660.1311;
                        output.setText(input.getText()+" BTC = "+total+" CNY");
                        break;
                    default:
                        total=amount*1;
                        output.setText(input.getText()+" BTC = "+total+" BTC");
                        break;
                }
                break;
        }
    }         

Main Driver Code

Adding functionalities like setting location, setting size and performing exit options on frame.

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

Java Currency Converter Project Output

java currency converter project output

Summary

Yayyy! We have finally built our Currency Converter in java. Now we can easily convert the currency from one type to another without the use of currency exchange rates API.

From this java project, we have learned how to use AWT & Swing components such as Label, ComboBox, Text Field and Button, add new functionality to the frame and how to make use of Action Listener and Item Listener.

TechVidvan Team

The TechVidvan Team delivers practical, beginner-friendly tutorials on programming, Java, Python, C++, DSA, AI, ML, data Science, Android, Flutter, MERN, Web Development, and technology. Our experts are here to help you upskill and excel in today’s tech industry.