Как поставить кнопку, которая конвертирует одну за другой в соответствии с входными данными в радиокнопке? - PullRequest
0 голосов
/ 16 ноября 2018

Я делаю преобразователь расстояния для моего проекта, но как вставить JButton в этот код? Я не хочу, чтобы JRadioButton был слушателем.

Я хотел добавить 3 кнопки, которые действуют как триггер для преобразования дюймов, миль и футов, когда пользователь выбирает переключатель,

Я пробовал так много раз, но всегда выдает ошибку.

Вот код:

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


public class MetricConverterWindow extends JFrame
{
   private JPanel panel;                  // A holding panel
   private JLabel messageLabel;           // A message to the user
   private JTextField kiloTextField;      // To hold user input
   private JRadioButton milesButton;      // To convert to miles
   private JRadioButton feetButton;       // To convert to feet
   private JRadioButton inchesButton;     // To convert to inches
   private ButtonGroup radioButtonGroup;  // To group radio buttons
   private final int WINDOW_WIDTH = 400;  // Window width
   private final int WINDOW_HEIGHT = 100; // Window height

   /**
      Constructor
   */

   public MetricConverterWindow()
   {

      setTitle("Metric Converter");


      setSize(WINDOW_WIDTH, WINDOW_HEIGHT);


      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


      buildPanel();


      add(panel);


      setVisible(true);
   }


   private void buildPanel()
   {

      messageLabel = new JLabel("Enter a distance in kilometers");

      kiloTextField = new JTextField(10);

      milesButton = new JRadioButton("Convert to miles");

      feetButton = new JRadioButton("Convert to feet");

      inchesButton = new JRadioButton("Convert to inches");

      // Group the radio buttons.
      radioButtonGroup = new ButtonGroup();
      radioButtonGroup.add(milesButton);
      radioButtonGroup.add(feetButton);
      radioButtonGroup.add(inchesButton);

      // Add action listeners to the radio buttons.
      milesButton.addActionListener(new RadioButtonListener());
      feetButton.addActionListener(new RadioButtonListener());
      inchesButton.addActionListener(new RadioButtonListener());

      // Create a panel and add the components to it.
      panel = new JPanel();
      panel.add(messageLabel);
      panel.add(kiloTextField);
      panel.add(milesButton);
      panel.add(feetButton);
      panel.add(inchesButton);
   }

   private class RadioButtonListener implements ActionListener
   {
      public void actionPerformed(ActionEvent e)
      {
         String input;          // To hold the user's input
         String convertTo = ""; // The units we're converting to
         double result = 0.0;   // To hold the conversion

         // Get the kilometers entered.
         input = kiloTextField.getText();

         // Determine which radio button was clicked.
         if (e.getSource() == milesButton)
         {
            // Convert to miles.
            convertTo = " miles.";
            result = Double.parseDouble(input) * 0.6214;
         }
         else if (e.getSource() == feetButton)
         {
            // Convert to feet.
            convertTo = " feet.";
            result = Double.parseDouble(input) * 3281.0;
         }
         else if (e.getSource() == inchesButton)
         {
            // Convert to inches.
            convertTo = " inches.";
            result = Double.parseDouble(input) * 39370.0;
         }

         // Display the conversion.
         JOptionPane.showMessageDialog(null, input + 
                  " kilometers is " + result + convertTo);
      }
   }

   public static void main(String[] args)
   {
      new MetricConverterWindow();
   }
}
...