fork download
  1. import javax.swing.*;
  2. import java.awt.event.*;
  3.  
  4. class CurrencyConverterGUI extends JFrame {
  5. private JComboBox<String> currencyComboBox;
  6. private JTextField inputTextField, resultTextField;
  7. private JButton convertButton, clearButton;
  8.  
  9. // Exchange rates
  10. private static final double EXCHANGE_RATE_CAN = 97.50;
  11. private static final double EXCHANGE_RATE_US = 129.02;
  12. private static final double EXCHANGE_RATE_EURO = 164.33;
  13.  
  14. public CurrencyConverterGUI() {
  15. setTitle("Currency Converter");
  16. setSize(300, 200);
  17. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  18. setLocationRelativeTo(null);
  19.  
  20. JLabel label1 = new JLabel("Currency Type:");
  21. JLabel label2 = new JLabel("Input $:");
  22. JLabel label3 = new JLabel("JMD Amount $:");
  23.  
  24. currencyComboBox = new JComboBox<>(new String[]{"US", "CAN", "Euro"});
  25. inputTextField = new JTextField(10);
  26. resultTextField = new JTextField(10);
  27. resultTextField.setEditable(false);
  28.  
  29. convertButton = new JButton("Convert");
  30. clearButton = new JButton("Clear");
  31.  
  32. JPanel panel = new JPanel();
  33. panel.add(label1);
  34. panel.add(currencyComboBox);
  35. panel.add(label2);
  36. panel.add(inputTextField);
  37. panel.add(label3);
  38. panel.add(resultTextField);
  39. panel.add(convertButton);
  40. panel.add(clearButton);
  41.  
  42. add(panel);
  43.  
  44. convertButton.addActionListener(new ActionListener() {
  45. public void actionPerformed(ActionEvent e) {
  46. convertCurrency();
  47. }
  48. });
  49.  
  50. clearButton.addActionListener(new ActionListener() {
  51. public void actionPerformed(ActionEvent e) {
  52. clearFields();
  53. }
  54. });
  55. }
  56.  
  57. private void convertCurrency() {
  58. String currency = (String) currencyComboBox.getSelectedItem();
  59. String input = inputTextField.getText();
  60.  
  61. if (input.isEmpty()) {
  62. JOptionPane.showMessageDialog(this, "Please enter a valid amount.", "Error", JOptionPane.ERROR_MESSAGE);
  63. return;
  64. }
  65.  
  66. try {
  67. double amount = Double.parseDouble(input);
  68. double convertedAmount = 0.0;
  69.  
  70. switch (currency) {
  71. case "US":
  72. convertedAmount = amount * EXCHANGE_RATE_US;
  73. break;
  74. case "CAN":
  75. convertedAmount = amount * EXCHANGE_RATE_CAN;
  76. break;
  77. case "Euro":
  78. convertedAmount = amount * EXCHANGE_RATE_EURO;
  79. break;
  80. }
  81.  
  82. resultTextField.setText(String.format("%.2f", convertedAmount));
  83. } catch (NumberFormatException ex) {
  84. JOptionPane.showMessageDialog(this, "Please enter a valid number.", "Error", JOptionPane.ERROR_MESSAGE);
  85. }
  86. }
  87.  
  88. private void clearFields() {
  89. inputTextField.setText("");
  90. resultTextField.setText("");
  91. currencyComboBox.setSelectedIndex(0);
  92. }
  93.  
  94. public static void main(String[] args) {
  95. SwingUtilities.invokeLater(new Runnable() {
  96. public void run() {
  97. new CurrencyConverterGUI().setVisible(true);
  98. }
  99. });
  100. }
  101. }
Success #stdin #stdout #stderr 0.28s 67292KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Exception in thread "AWT-EventQueue-0" java.awt.HeadlessException: 
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
	at java.desktop/java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:197)
	at java.desktop/java.awt.Window.<init>(Window.java:538)
	at java.desktop/java.awt.Frame.<init>(Frame.java:423)
	at java.desktop/java.awt.Frame.<init>(Frame.java:388)
	at java.desktop/javax.swing.JFrame.<init>(JFrame.java:180)
	at CurrencyConverterGUI.<init>(Main.java:14)
	at CurrencyConverterGUI$3.run(Main.java:97)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:389)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)