Темп калькулятор Java GUI W / два вывода JButtons (Cel / Fah) Calc в Jlabel5? - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь построить графический калькулятор температуры. Я почти уверен, что близок к завершению и пытаюсь найти исправление, прежде чем я перебираю старый код и java книгу. Плюс, может быть, это поможет кому-то в будущем. Я полагаю, что моя ошибка произошла вокруг секции операторов if, и могу только думать, что, возможно, я ошибочно помещаю вещи в неправильное место, то есть в текстовое поле и метки.

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.lang.Math;
    public class GUI implements ActionListener{

    JFrame frame;
    JPanel contentPane;
    JLabel label1, label2, label3, label4, label5;
    JTextField word1;
    JButton Celcius, Fahrenheit;

    public GUI(){
    frame = new JFrame("Temperature Convertor");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);



    // Box layout
    //contentPane.setLayout(new BoxLayout(contentPane,BoxLayout.PAGE_AXIS));
    //contentPane.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
    //contentPane.setBackground(Color.black);

    //Grid layout
    contentPane = new JPanel();
    contentPane.setLayout(new GridLayout(0, 2, 10, 5));
    contentPane.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
    contentPane.setBackground(Color.black);

     label1 = new JLabel("Temperature Convertor");
     label1.setAlignmentX(JLabel.CENTER_ALIGNMENT);
     label1.setBorder(BorderFactory.createEmptyBorder(30,30,30,30));
     contentPane.add(label1);

    label2 = new JLabel(new ImageIcon("image1.jpg"));
    label2.setAlignmentX(JLabel.CENTER_ALIGNMENT);
    label2.setBorder(BorderFactory.createEmptyBorder(30,30,30,30));
    contentPane.add(label2);

    label3 = new JLabel("Enter Temperature: ");
    label3.setAlignmentX(JLabel.CENTER_ALIGNMENT);
    label3.setBorder(BorderFactory.createEmptyBorder(30,30,30,30));
    contentPane.add(label3);

    word1 = new JTextField(10);
    contentPane.add(word1);

    Celcius = new JButton("Celcius");
    Celcius.setAlignmentX(JButton.CENTER_ALIGNMENT);
    Celcius.setActionCommand("Celcius");
    Celcius.addActionListener(this);
    contentPane.add(Celcius);

    Fahrenheit = new JButton("Fahrenheit");
    Fahrenheit.setAlignmentX(JButton.CENTER_ALIGNMENT);
    Fahrenheit.setActionCommand("Fahrenheit");
    Fahrenheit.addActionListener(this);
    contentPane.add(Fahrenheit);

    label4 = new JLabel("The Coverted Temperature is: ");
    label4.setAlignmentX(JLabel.CENTER_ALIGNMENT);
    label4.setBorder(BorderFactory.createEmptyBorder(30,30,30,30));
    contentPane.add(label4);

    label5 = new JLabel("");
    label5.setAlignmentX(JLabel.CENTER_ALIGNMENT);
    label5.setBorder(BorderFactory.createEmptyBorder(30,30,30,30));
    contentPane.add(label5);

    frame.setContentPane(contentPane);
    frame.pack();
    frame.setVisible(true);


    }

    public void actionPerformed(ActionEvent event){

    String eventName = event.getActionCommand();
    if (eventName.equals("Celcius")){
        String label5;
        double word1;
        label5 = word1.getText();
        label5 = (((Double.parseDouble(word1)*9)%5)+32) + "Degree's Celcuis" 
 ; 
        label5.setText(Double.toString(word1));
    }
    else if (eventName.equals("Fahrenheit")){
        String label5;
        double word1;
        label5 = word1.getText();
        label5 = ((((Double.parseDouble(word1)-32)*5)%9)) + "Degree's    
   Fahrenheit" ;   
        label5.setText(Double.toString(word1));



        }   
    }

    public static void main(String[] args){
        GUI g = new GUI();
        }
    }

Ответы [ 2 ]

0 голосов
/ 15 мая 2018
public void actionPerformed(ActionEvent event){

String eventName = event.getActionCommand();
if (eventName.equals("Celcius")){
    String label5;
    double word1;
    label5 = word1.getText();
    label5 = (((Double.parseDouble(word1)*9)%5)+32) + "Degree's Celcuis" ; 
    label5.setText(Double.toString(word1));
}
else if (eventName.equals("Fahrenheit")){
    String label5;
    double word1;
    label5 = word1.getText();
    label5 = ((((Double.parseDouble(word1)-32)*5)%9)) + "Degree'sFahrenheit" ;      
    label5.setText(Double.toString(word1));
    }   
}

Ваша ошибка здесь ... Вы объявляете 2 новых локальных var, lable5 как String и word1 как double, поэтому ваши предыдущие переменные (word1 как JTextFeild и lable5 как JLable) здесь недоступны ... doubleпеременная не имеет метода getText и String не имеет setText.Сделайте что-то вроде этого:

   double d = Double.valueOf(word1.getText()); 
   String s  = (((d*9)%5)+32) + "Degree's Celcuis"  ; 
    label5.setText(s);
0 голосов
/ 15 мая 2018

Ваша проблема прямо здесь ...

double word1;
label5 = word1.getText();

double является примитивом, у него нет свойств или методов, пусть вдоль getText метода

Я думаю, чтоВы хотели, чтобы было что-то более похожее на ...

String label5;
label5 = word1.getText();
label5 = (((Double.parseDouble(label5) * 9) % 5) + 32) + "Degree's Celcuis";

Я понятия не имею, что вы думали, когда вы сделали ...

label5.setText(Double.toString(label5));

label5 уже String и String также не имеют setText метода, поэтому ни один из них не имеет никакого смысла.Может быть, вы хотели использовать JLabel label5; вместо этого, что означало бы, что вам нужно назвать свои переменные лучше

...