Получение пользовательского ввода, а затем печать нового текста с использованием AWT - PullRequest
0 голосов
/ 20 января 2019

Я пытаюсь создать простую программу, в которой, когда я нажимаю кнопку, появляется новый текст, но я не знаю, как это сделать (я думаю, что это очень просто).

Код, который у меня есть сейчас:

    import java.awt.*; 
    public class ConsumptionGUI extends Frame 
    {
   public ConsumptionGUI()
    {
        Frame fr = new Frame();
        Button b1 = new Button ("Terminate Program");
        Button b2 = new Button ("Start");
        b1.setBounds(50,50,50,50);
        b2.setBounds(50,50,50,50);
        b1.addActionListener(e-> System.exit(0));
        Label txt = new Label ("This is my first GUI");
        //add to frame (after all buttons and text was added)
        fr.add(b2);
        fr.add(txt);
        fr.add(b1);
        fr.setSize(500,300);
        fr.setTitle("Vehicles Information System");
        fr.setLayout(new FlowLayout());
        fr.setVisible(true);   
    } //end constructor

    public static void main(String args[]){
    ConsumptionGUI frame1= new ConsumptionGUI();
    } //end main

По сути, после этого момента мне удалось создать рамку с двумя кнопками и текстом в середине.Я действительно изо всех сил пытаюсь продолжить отсюда.

Мне нужно, чтобы программа сначала запускалась нажатием кнопки, затем печатала какой-то новый текст (что-то вроде «введите скорость вашего автомобиля») и затем сохраняла эту информацию (для использования в простой формуле).После этого программа должна отобразить используемую формулу и распечатать рассчитанное значение.

Может кто-нибудь помочь, пожалуйста?

Спасибо

1 Ответ

0 голосов
/ 22 января 2019

Чтобы получить пользовательский ввод, вы можете реализовать Dialog, как показано ниже. Вы можете использовать другой аналогичный диалог, чтобы показать формулу и результат.

import java.awt.*;
import java.awt.event.*;

public class ConsumptionGUI extends Frame
{
  public ConsumptionGUI()
  {
    Frame fr = new Frame();
    Button b1 = new Button("Terminate Program");
    Button b2 = new Button("Start");
    //b1.setBounds(50, 50, 50, 50); // Unnecessary
    //b2.setBounds(50, 50, 50, 50); // Unnecessary
    b1.addActionListener(e -> System.exit(0));
    b2.addActionListener(new ActionListener()
    {
      @Override
      public void actionPerformed(ActionEvent e)
      {
        InputDialog dialog = new InputDialog(fr);
        dialog.setVisible(true);
        System.out.println("User inputted speed = " + dialog.getSpeed());
      }
    });
    Label txt = new Label("This is my first GUI");
    //add to frame (after all buttons and text was added)
    fr.add(b2);
    fr.add(txt);
    fr.add(b1);
    fr.setSize(500, 300);
    fr.setTitle("Vehicles Information System");
    fr.setLayout(new FlowLayout());
    fr.setVisible(true);
  } //end constructor

  public static void main(String args[])
  {
    ConsumptionGUI frame1 = new ConsumptionGUI();
  } //end main
}

class InputDialog extends Dialog
{
  private int speed;

  InputDialog(Frame owner)
  {
    super(owner, "Input", true);
    addWindowListener(new WindowAdapter()
    {
      @Override
      public void windowClosing(WindowEvent e)
      {
        dispose();
      }
    });

    TextField textField = new TextField(20);

    Button okButton = new Button("OK");
    okButton.addActionListener(new ActionListener()
    {
      @Override
      public void actionPerformed(ActionEvent e)
      {
        String speedString = textField.getText();
        speed = !speedString.isEmpty() ? Integer.parseInt(speedString) : 0;
        dispose();
      }
    });

    setLayout(new GridLayout(3, 1));
    add(new Label("Please enter your car's speed"));
    add(textField);
    add(okButton);
    pack();
  }

  int getSpeed()
  {
    return speed;
  }
}
...