2017-04-03 74 views
0

我新的Java和我試圖做一個簡單的 初學者程序,它在用戶的溫度和輸出 輸入其轉換成 攝氏度。我認爲我有些東西與聽​​衆掛鉤錯誤 ,不過因爲它給出了輸出,但是 它總是爲零。我真的不確定我的錯誤 與聽衆和行動事件。的Java Swing/JFrame的聽衆

enter image description here

import java.awt.FlowLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JTextField; 
public class TemperatureConversionJFrame extends JFrame{ 
private final JTextField temperatureF; 
private final JLabel result; 
public int fahrenheit = 0; 

public TemperatureConversionJFrame(){ 
    super("Celsius Conversion"); 
    setLayout(new FlowLayout()); 
    temperatureF = new JTextField("Enter temperature in fahrenheit to be converted"); 
    add(temperatureF); 
    result = new JLabel("Result in Celsius"); 
    add(result); 


    TextFieldHandler handler = new TextFieldHandler(); 

    temperatureF.addActionListener(handler); 

} 

private class TextFieldHandler implements ActionListener{ 

@Override 
    public void actionPerformed(java.awt.event.ActionEvent evt){ 
     int F; 
    int results; 
      F = Integer.parseInt(temperatureF.getText()); 
      results = 5/9 * (F - 32); 
result.setText(String.valueOf(results)); 
    } 
} 

import javax.swing.JFrame; 

public class TemperatureConversionJFrameTest 
{ 
public static void main(String[] args) 
{ 
    TemperatureConversionJFrame temperatureConversionJFrame = new TemperatureConversionJFrame(); 
      temperatureConversionJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
temperatureConversionJFrame.setSize(275, 100); 
temperatureConversionJFrame.setVisible(true); 
} 

回答

2

我覺得我有什麼迷上了錯誤的聽衆

好做的第一件事就是添加的System.out.println(...)到監聽器代碼,看看監聽器是否被調用。

假設它被調用,那麼我會想這個問題是:

results = 5/9 * (F - 32); 

你正在做的整數除法所以5/9始終爲0

一個解決方法是使用這樣的:

results = (F - 32) * 5/9; 

另外,僅當按下Enter鍵時纔會調用文本字段上的ActionListener。您可能要考慮使用DocumentListener。無論何時在文本字段中添加或刪除文本,都會調用它。

閱讀有關How to Write a DocumentListener的Swing教程中的部分以獲取更多信息和示例。

+0

啊。我完全錯過了。謝謝,這只是它顯示0的邏輯。 –

+1

@MichaelFogarty,這就是爲什麼應該使用顯示計算值的基本調試。它可以幫助您縮小問題的位置而不是猜測。 – camickr

+0

只要它允許我接受答案。謝謝! –