zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite

Was passiert hier:

outCel.setText( celsTemp + "" );

Antwort:

Der Text, der in dem Textfeld outCel erscheint wird mit der setText Methode gesetzt. Der Parameter für diese Methode sollte eine Referenz auf einen String sein. Aber celsTemp ist ein Integer und wird nicht funktionieren. Aber in dem Folgenden

celsTemp + ""

wird das   +   Stringverkettung bedeuten, so dass der Integer in celsTemp in einen String konvertiert wird. Ein Leerstring wird mit ihm verkettet, was einen String ergibt, der richtige Typ für den Parameter.

Vollständige Applikation

Die vollständige Applikation steht unten. Natürlich möchten Sie das in eine Datei kopieren und es kompilieren und ausführen.

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

public class FahrConvert extends JFrame implements ActionListener
{
  JLabel heading  = new JLabel("Convert Fahrenheit to Celsius");
  JLabel inLabel  = new JLabel("Fahrenheit    ");
  JLabel outLabel = new JLabel("Celsius ");

  JTextField inFahr = new JTextField( 7 );
  JTextField outCel = new JTextField( 7 );

  int fahrTemp ;
  int celsTemp ;

  FahrConvert( String title )
  {
     super( title );
     setLayout( new FlowLayout() );

     inFahr.addActionListener( this );
     outCel.setEditable( false );

     add( heading );
     add( inLabel );
     add( outLabel );
     add( inFahr );
     add( outCel );

     setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
  }

  // Die Applikation
  public int convert( int F )
  {
    return ( (F-32) * 5 ) / 9;
  }

  public void actionPerformed( ActionEvent evt)
  {
    String userIn = inFahr.getText() ;
    fahrTemp = Integer.parseInt( userIn ) ;

    celsTemp = convert( fahrTemp ) ;

    outCel.setText( celsTemp+"" );
    repaint();
  }

  public static void main ( String[] args )
  {
    FahrConvert   fahr  = new FahrConvert( "F to C" ) ;

    fahr.setSize( 200, 150 );
    fahr.setVisible( true );
  }

}

FRAGE 7:

Was passiert, wenn der Anwender Text eingibt, den Integer.parseInt() nicht in einen Integer konvertieren kann?