BMI Rechner mit eclipse Visual Editor (Seperates Fenster)

Schoofmelker

Mitglied
Huhu bin neu hier und hätte mal ne Frage,

Also wir sollen von der Schule aus einen BMI-Rechner programmieren.
Ich hau euch mal den Quelltext hierein, kann es nicht so gut erklären. 🙂

Java:
package paket_bmi;

import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JTextField;
import java.awt.Dimension;
import javax.swing.JButton;
import java.awt.Rectangle;
import javax.swing.JEditorPane;
import javax.swing.JTextPane;

public class Hauptfenster extends JFrame {

    private static final long serialVersionUID = 1L;
    private JPanel jContentPane = null;
    private JButton jButtonberechnen = null;
    private JButton jButtonreset = null;
    private JTextPane jTextPanegewichttextfeld = null;
    private JTextPane jTextPanegroeßetextfeld = null;
    private JTextPane jTextPaneBMITexteingabe = null;
    private JTextField gewicht = null;
    private JTextField groeße = null;
    private JTextField bmi = null;
    
    
    public Hauptfenster() {
        super();
        initialize();
    }


     
    private void initialize() {
        this.setSize(458, 267);
        this.setContentPane(getJContentPane());
        this.setTitle("JFrame");
    }

   
    private JPanel getJContentPane() {
        if (jContentPane == null) {
            jContentPane = new JPanel();
            jContentPane.setLayout(null);
            jContentPane.add(getJButtonberechnen(), null);
            jContentPane.add(getJButtonreset(), null);
            jContentPane.add(getJTextPanegewichttextfeld(), null);
            jContentPane.add(getJTextPanegroeßetextfeld(), null);
            jContentPane.add(getJTextPaneBMITexteingabe(), null);
            jContentPane.add(getGewicht(), null);
            jContentPane.add(getGroeße(), null);
            jContentPane.add(getBmi(), null);
        }
        return jContentPane;
    }

    /**
     * This method initializes jButtonberechnen    
     *     
     * @return javax.swing.JButton    
     */
    private JButton getJButtonberechnen() {
        if (jButtonberechnen == null) {
            jButtonberechnen = new JButton();
            jButtonberechnen.setBounds(new Rectangle(45, 135, 155, 44));
            jButtonberechnen.setText("BMI Berechnen");
            jButtonberechnen.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    
                    double masse = Double.parseDouble(gewicht.getText());
                    double groesse = Double.parseDouble(groeße.getText());
                    double bmi = masse / (groesse* groesse);
                    
                    
                    
                }
            });
        }
        return jButtonberechnen;
    }

    
    private JButton getJButtonreset() {
        if (jButtonreset == null) {
            jButtonreset = new JButton();
            jButtonreset.setBounds(new Rectangle(240, 132, 171, 46));
            jButtonreset.setText("Daten Zurücksetzen");
            jButtonreset.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    
                    
                }
            });
        }
        return jButtonreset;
    }

    /**
     * This method initializes jTextPanegewichttextfeld    
     *     
     * @return javax.swing.JTextPane    
     */
    private JTextPane getJTextPanegewichttextfeld() {
        if (jTextPanegewichttextfeld == null) {
            jTextPanegewichttextfeld = new JTextPane();
            jTextPanegewichttextfeld.setBounds(new Rectangle(45, 48, 181, 22));
            jTextPanegewichttextfeld.setText("Bitte Gewicht eingeben:");
        }
        return jTextPanegewichttextfeld;
    }

    /**
     * This method initializes jTextPanegroeßetextfeld    
     *     
     * @return javax.swing.JTextPane    
     */
    private JTextPane getJTextPanegroeßetextfeld() {
        if (jTextPanegroeßetextfeld == null) {
            jTextPanegroeßetextfeld = new JTextPane();
            jTextPanegroeßetextfeld.setBounds(new Rectangle(45, 90, 181, 22));
            jTextPanegroeßetextfeld.setText("Bitte Ihre Körpergröße in cm eingeben");
        }
        return jTextPanegroeßetextfeld;
    }

    /**
     * This method initializes jTextPaneBMITexteingabe    
     *     
     * @return javax.swing.JTextPane    
     */
    private JTextPane getJTextPaneBMITexteingabe() {
        if (jTextPaneBMITexteingabe == null) {
            jTextPaneBMITexteingabe = new JTextPane();
            jTextPaneBMITexteingabe.setBounds(new Rectangle(105, 195, 91, 22));
            jTextPaneBMITexteingabe.setText("Ihr BMI beträgt :");
        }
        return jTextPaneBMITexteingabe;
    }

    /**
     * This method initializes gewicht    
     *     
     * @return javax.swing.JTextField    
     */
    private JTextField getGewicht() {
        if (gewicht == null) {
            gewicht = new JTextField();
            gewicht.setBounds(new Rectangle(286, 51, 93, 20));
        }
        return gewicht;
    }

    /**
     * This method initializes groeße    
     *     
     * @return javax.swing.JTextField    
     */
    private JTextField getGroeße() {
        if (groeße == null) {
            groeße = new JTextField();
            groeße.setBounds(new Rectangle(283, 90, 95, 20));
        }
        return groeße;
    }

    /**
     * This method initializes bmi    
     *     
     * @return javax.swing.JTextField    
     */
    private JTextField getBmi() {
        if (bmi == null) {
            bmi = new JTextField();
            bmi.setBounds(new Rectangle(293, 200, 78, 20));
        }
        return bmi;
    }

}


Meine Frage, ist nun da ich 2 Textfelder gemacht hab die auch von String zu double umgewandelt hab, kann ich den BMI im Fenster direkt anzeigen lassen.Wie krieg ich den berechneten Wert in das Textfeld bmi. Also nachdem ich den Startbotton in eclipse gedrückt habe.

Würde mich sehr sehr bedanken für die passende Antwort

Grüße Timo
 
Zuletzt bearbeitet von einem Moderator:
Was meinst du damit "nachdem ich den Startbutton in eclipse gedrückt habe"?
Versteh ich das Richtig:
1. Du Startest das Programm .
2. Der User gibt Größe und Gewicht ein.
3. Der bmi wird daraus berechnet und angezeigt

Wenn nicht dann bitte den Programmablauf erklären.

Mit freundlichen Grüßen,
AntiMuffin
 
Also, ich starte das Programm in eclipse. der grüne botton mit dem Pfeil drauf. Dann muss man in dem Fenster, dass nun erscheint größe und Gewicht eingeben. Dann soll man auf den Botton BMI berechnen drücken, der bmi soll dan ausgerechnet und in dem Textfeld bmi angezeigt werden.

Grüße
 
Na dann musst du bei actionPerformed() von dem Button zunächst die Werte der beiden Textfelder auslesen und danach in das dritte eintragen.

Ungefähr so:
///Hab schon ewig kein swing mehr gemacht, evtl heißen die Methoden auch anders :bahnhof:
Java:
public void actionPerformed(java.awt.event.ActionEvent e) {
         double groesse = Double.parseDouble (getGroeße().getText ()); // Kein ß benutzen !
         double gewicht = Double.parseDouble (getGewicht().getText ());
         double bmi = 0;
         // berechnen 
         getBmi().setText (Double.toString (bmi));
         
}
 
oh ja danke funktioniert 🙂. Kann ich das auch noch irgendwie runden, d.h. dass nur 1ne nachkomma ziffer zu erkennen ist.
und wenn ich auf den resetbotton klicke sollen die Daten reseted werden, wie geht das ? 🙂
Sry hab wirklich nicht alzu große Ahnung von dem 🙂

Danke und Grüße
 
Ja kannst du mithilfe von String.format("%.1f", Double.toString (bmi)); - Naja du hast den ResetButton und machst dort bei actionPerformed() einfach getGroeße().setText (""); und für die anderen Textfelder das gleiche 🙂

Gruß,
AntiMuffin
 
okay das mit dem Reset button hat funktioniert 😉, so jetzt habe ich noch ne letzte Experten frage. Also ich will, dass ich erst wenn ich meine Gewicht und Größe eingegeben habe, dass dann erst der Botton BMI berechnen kommt. Und erst wenn ich den gedrückt habe soll dann mein BMI kommen 😉

Hoffe du bekommst das noch hin aber wenn nicht ist das auch nicht schlimm 🙂

Grüße
 
Dafür musst du nur prüfen ob in den Textfeldern etwas steht:

Dafür hätte ich eine extra Methode macht die schaut ob der Button enabled oder disabled werden muss. Diese Methode soll dann immer aufgerufen werden, wenn sich der Text im Textfeld ändert.
Java:
private JTextField getGroeße() {
if (groeße == null) {
groeße = new JTextField();
groeße.setBounds(new Rectangle(283, 90, 95, 20));
groeße.getDocument().addDocumentListener(new DocumentListener() {
    pruefeButton();
});}
return groeße;
}
private JTextField getGewicht() {
if (gewicht == null) {
gewicht = new JTextField();
gewicht.setBounds(new Rectangle(286, 51, 93, 20));
gewicht.getDocument().addDocumentListener(new DocumentListener() {
    pruefeButton();
});}
}
return gewicht;
}

private void pruefeButton (){
      getJButtonberechnen().setEnabled( getGroeße().getText().length > 0 &&            getGewicht().getText().length > 0);
}
 
Zuletzt bearbeitet:

Zurück
Oben