преобразование температуры Java в GUI

1

я снова борюсь, выполняя программу в java, которая преобразует температуру от Цельсия в fahrenhiet, но это должно быть сделано в графическом интерфейсе, чтобы пользователь мог ввести число для цели и щелкнуть по botton, чтобы преобразовать его. Ив моделировал это из примера в моей книге, однако в книге он показывает, что он работает без статического main(), но моя IDE дала мне ошибку, говоря, что это было необходимо, поэтому ive добавила static main() и ive попробовал вызвать tempwindow(), чтобы увидеть, будет ли это работать, но все равно ничего, и даже если я прокомментирую вызов, он не даст мне ошибку, но ничего не произойдет. im hopping кто-то может помочь показать мне, что я делаю неправильно и как я должен идти об этом.

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

public class tempcon extends JFrame
{
    private JPanel panel;
    private JLabel messageLabel;
    private JTextField tempC;
//    private JRadioButton tempF;
//    private ButtonGroup radioButtonGroup;
    private JButton calcButton;
    private final int WINDOW_WIDTH = 400;
    private final int WINDOW_HEIGHT = 100;

    public tempwindow()
    {
       setTitle("Temurture convertion");
       setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       buildPanel();
       add(panel);
       setVisible(true);
    }

    private void buildPanel()
    {
        messageLabel = new JLabel("enter tempurture in celsius");
        tempC = new JTextField(10);
        calcButton = new JButton("convert");

        calcButton.addActionListener(new CalcButtonListener());
        panel = new JPanel();

        panel.add(messageLabel);
        panel.add(tempC);
        panel.add(calcButton);

    }
    private class CalcButtonListener implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            String input;
            double temp;
            input = tempC.getText();
            temp = Double.parseDouble(input) * 1.8 + 32;
            JOptionPane.showMessageDialog(null, "that is " + temp + "degrees fehrenhiet");
        }
    }
    public static void main(String[] args)
    {
        tempwindow();

    }
}
Теги:
swing
computer-science

3 ответа

2
Лучший ответ
public static void main(String[] args)
{
    tempcon myTempWindowInstance = new tempcon();
    myTempWindowInstance.tempwindow();
}

Вы никогда не инициализируете tempcon. Ваш конструктор должен иметь то же имя, что и класс, поэтому вместо этого рекомендую следующие изменения:

  1. Замените public tempwindow() public tempcon() чтобы исправить конструктор.

    public tempcon()
    {
       setTitle("Temurture convertion");
       setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       buildPanel();
       add(panel);
       setVisible(true);
    }
    
  2. создайте экземпляр tempcon с помощью new, который вызывает конструктор:

    public static void main(String[] args)
    {
        tempcon myTempWindowInstance = new tempcon();
    }
    
  • 0
    Код нуждается в большем количестве изменений, чем просто.
  • 0
    @DavidWallace действительно. Я предположил, что tempWindow () был задан как функция, а не как конструктор. Стиль кодирования нуждается в значительном улучшении, но именно поэтому OP зачислен в информатику; учить. Я исправлю свой ответ, чтобы отразить дальнейшие необходимые изменения, но в основном меня беспокоило решение данной проблемы. Спасибо за внимание.
Показать ещё 1 комментарий
3

Вы делаете несколько ошибок:

  • У вашего конструктора не может быть другого имени из вашего имени класса
  • Вам нужно создать экземпляр объекта для вызова конструктора, вместо того чтобы создать экземпляр объекта, вызывающий конструктор, но вы не можете просто получить к нему доступ, как метод.
  • Вы должны использовать соглашения об именах Java для имен классов.

Класс:

public class TempCon extends JFrame
{
// Variable declarations
    public TempCon()  // Constructor should match the Class name
    {
    }
}

Основной класс:

public static void main(String[] args)
    {
        TempCon converter = new TempCon();
    }
2

пожалуйста, напишите возврат типа вашей функции.

    public  void tempwindow()

создать объект класса и метод вызова.

public static void main(String[] args)
{
    tempcon t=new tempcon();
    t.tempwindow();

}

и изучать Java-объектное Java-ориентированное программирование.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню