zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite

Antwort:

JLabel fatLabel    mit    JTextField inFat

JLabel calLabel    mit    JTextField inCal

JLabel perLabel    mit    JTextField outPer

JPanels Komponenten hinzufügen

GUI mit Panels

Die Idee ist es fünf Panels zu haben, eines für jedes Paar Label und Textfeld und ein Panel für die Überschrift und für den Button. Die Abbildung zeigt diese Gruppierung. (Die Linien um die Panels erscheinen nicht in der tatsachlichen GUI.)

Verwenden Sie add(), um Komponenten einem Panel hinzufügen. FlowLayout ist der Standard Layoutmanager für JPanel. Verwenden Sie setLayout() nur, wenn Sie einen anderen Layoutmanager wollen.

public class PercentFatPan 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!");

  // Neu: fünf Panels

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

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

    // Neu: jedem Panel Komponenten hinzufügen

    hedPanel.add( heading );

    fatPanel.add(  );
    fatPanel.add(  );

    calPanel.add(  );
    calPanel.add(  );

    perPanel.add(  );
    perPanel.add(  );

    butPanel.add( doit );

   . . . . .

 }

FRAGE 5:

Entscheiden Sie welche Komponenten welchem Panel hinzugefügt werden sollten. Klicken Sie dann auf den Button, um zu sehen, ob Sie richtig lagen.

Bis jetzt wurden die Labels, die Textfelder und der Button den fünf Panels hinzugefügt, aber die Panels wurden noch nicht dem Frame hinzugefügt.