Siehe unten.
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 ); } }
Wenn Sie fatApp.setResizable( false )
in true
ändern,
bleiben dann die Labels und Textfelder nebeneinander, wenn Sie die Größe des Frames ändern?