zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite

Antwort:

Siehe unten.

Vollständiges Programm

Hier ist eine neue Version des Fett-Kalkulators Sie können es in einen Editor kopieren, speichern und ausführen. Wenn Sie es ausführen, versuchen Sie die Größe des Frames zu ändern. Die main() Methode verhindert das. Ändern Sie das, wenn Sie möchten und beobachten Sie die Auswirkungen.

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

public class PercentFatPanel extends JFrame implements ActionListener
{
  JLabel heading    = new JLabel("Percent of Calories from Fat");
  JLabel fatLabel   = new JLabel("Enter grams of fat:   ");
  JLabel calLabel   = new JLabel("Enter total calories: ");
  JLabel perLabel   = new JLabel("Percent calories from fat: ");

  JTextField inFat  = new JTextField( 7 );
  JTextField inCal  = new JTextField( 7 );
  JTextField outPer = new JTextField( 7 );

  JButton    doit   = new JButton("Do It!");

  JPanel hedPanel   = new JPanel();
  JPanel fatPanel   = new JPanel();
  JPanel calPanel   = new JPanel();
  JPanel perPanel   = new JPanel();
  JPanel butPanel   = new JPanel();

  int calories ;  // Input: Kalorien gesamt je Packung
  int fatGrams ;  // Input: Gramm Fett je Packung
  double percent; // Ergebnis: Prozent der Kalorien durch Fett

  public PercentFatPanel()
  {
    setTitle( "Calories from Fat" );
    outPer.setEditable( false );
    setLayout( new FlowLayout() );     // den Layoutmanager für den JFrame setzen

    // den Panels Komponenten hinzufügen
    hedPanel.add( heading );
    fatPanel.add( fatLabel );
    fatPanel.add( inFat );
    calPanel.add( calLabel );
    calPanel.add( inCal );
    perPanel.add( perLabel );
    perPanel.add( outPer );
    butPanel.add( doit );

    // dem Frame Panels hinzufügen
    add( hedPanel );
    add( heading );
    add( fatPanel );
    add( calPanel );
    add( perPanel );
    add( doit );
    add( butPanel );

    setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    doit.addActionListener( this );
  }

  // Die Application
  public void calcPercent( )
  {
    percent = ( (fatGrams * 9.0) / calories ) * 100.0 ;
  }

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

    userIn    = inCal.getText()  ;
    calories  = Integer.parseInt( userIn ) ;
    calcPercent() ;

    outPer.setText( percent+" " );
    repaint();
  }

  public static void main ( String[] args )
  {
    PercentFatPanel fatApp  = new PercentFatPanel() ;
    fatApp.setSize( 300, 225 );
    fatApp.setResizable( false );
    fatApp.setVisible( true );
  }
}

FRAGE 7:

Wenn Sie fatApp.setResizable( false ) in true ändern, bleiben dann die Labels und Textfelder nebeneinander, wenn Sie die Größe des Frames ändern?