2017-04-03 4 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; 

また、テキストフィールドのActionListenerは、Enterキーが押されたときにのみ呼び出されます。

DocumentListenerを使用することをおすすめします。これは、テキストフィールドにテキストが追加または削除されるたびに呼び出されます。

詳細と例については、How to Write a DocumentListenerのSwingチュートリアルのセクションを参照してください。

+0

ああ。私は完全にそれを逃した。ありがとう、それは0を表示していたロジックだけでした。 –

+1

@MichaelFogarty、そのため、計算の値を表示するような基本的なデバッグを使用する必要があります。それは、推測の代わりに問題がどこにあるかを絞り込むのに役立ちます。 – camickr

+0

私はできるだけ早く答えを受け入れます。ありがとう! –