Was halter iht von diesem Code?

Status
Nicht offen für weitere Antworten.

materthron

Mitglied
Hi!
Bitte um Kommentare für diesen Code.

Danke im Voraus

Philipp

Code:
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DecimalFormat;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;


public class MainWindow extends JFrame 
implements ActionListener
{
    static Menu mb = null; //the menu
    
    static JTextField heightInput = new JTextField(); //TextField for the body height
    static JTextField weightInput = new JTextField(); //TextField for the weight
    
    static JLabel bmiLabel;  //The BMI
    static JLabel minWeight; //The minimum weight you should have at you size (BMI = 18,9) 
    static JLabel maxWeight; //The maximum weight you should have at your size (BMI = 24,9)
    
    static JComboBox systemBox; //The ComboBox to select the measuring system
    
    static byte BMIvalue; //the BMI
    
    static char sex; //the users sex
    
    
    /** Contains: dataPanel (the upper one) and inforPanel (the lower one) */
    public  MainWindow()
    {
        
        /* creates an array in wich the symbols of the measuring systems are stored
        * 0: [cm][kg]
        * 1: [foot] [lbs]
        */
        final String[][] mesSystem = new String[2][2];
              mesSystem[0][0] = "cm"; mesSystem[0][1] = "kg";
              mesSystem[1][0] = "foot"; mesSystem[1][1] = "lbs";
        
        
        
     	//The GUI elements
        JPanel main = new JPanel( new GridLayout(0,1) );
        getContentPane().add(main);
        
        //dataPanel
        JPanel dataPanel = new JPanel();
        main.add(dataPanel);
           
        dataPanel.setBorder( BorderFactory.createTitledBorder("Enter your data here") );
           
           //firstLine
           JPanel firstLine = new JPanel( new GridLayout(0,2) );
           dataPanel.add(firstLine);
           
           firstLine.setBackground(Color.RED);
           firstLine.setOpaque(true);
           
                //sizePanel
                JPanel sizePanel = new JPanel();
                firstLine.add(sizePanel);

                    JLabel sizeLabel = new JLabel("Size (in cm):");
                    sizePanel.add(sizeLabel);

                    heightInput = new JFormattedTextField();
                    sizePanel.add(heightInput);
                    
        
                //weightPanel
                JPanel weightPanel = new JPanel();
                firstLine.add(weightPanel);
        
                    JLabel weightLabel = new JLabel("Weight (in kg):");
                    weightPanel.add(weightLabel);
        
                    weightInput = new JFormattedTextField();
                    weightPanel.add(weightInput);
            
            
            
            //secondLine
            JPanel secondLine = new JPanel();//( new GridLayout(2,1) );
            dataPanel.add(secondLine);
            
                //systemPanel
                JPanel systemPanel = new JPanel( new FlowLayout(FlowLayout.LEFT) );
                secondLine.add(systemPanel);
            
                String[] systems = { "Metric system", "Imperial system" };
            
                systemBox = new JComboBox(systems);
                systemPanel.add(systemBox);
            
                systemBox.addActionListener(this);
            
        
                //buttonPanel
                JPanel buttonPanel = new JPanel( new FlowLayout(FlowLayout.RIGHT) );
                secondLine.add(buttonPanel);
            
            
                JButton calcButton = new JButton("Calculate BMI");
                buttonPanel.add(calcButton);
            
                getRootPane().setDefaultButton(calcButton);
                calcButton.setActionCommand("b");
                calcButton.addActionListener(this);
        
        
        
        //infoPanel
        JPanel infoPanel = new JPanel( new GridLayout(0,1) );
        main.add(infoPanel);
        
        infoPanel.setBorder( BorderFactory.createTitledBorder("Information") );
        
        	//bmiPanel (contains bmiLabel)
            JPanel bmiPanel = new JPanel( new FlowLayout(FlowLayout.CENTER) );
            infoPanel.add(bmiPanel);
            
                //bmiLabel
                bmiLabel = new JLabel("Your BMI is: ");
                bmiPanel.add(bmiLabel);
            
            
            //weightInfoPanel (contains all information regarding to weight)
            JPanel weightInfoPanel = new JPanel( new FlowLayout(FlowLayout.CENTER) );
            infoPanel.add(weightInfoPanel);
            
                //minWeight
                minWeight = new JLabel("Minimum weight: ");
                weightInfoPanel.add(minWeight);
            
                //maxWeight
                maxWeight = new JLabel("Maximum weight: ");
                weightInfoPanel.add(maxWeight);
                
        
        
        
        //Window Preferences
        setJMenuBar( mb = new Menu() ); //set the menubar
        
        setSize(300,400);
        setResizable(false);
        setTitle(AboutWindow.appName+" "+AboutWindow.version);
        
        setLocationRelativeTo(null);
        
        setVisible(true);
    }




    /** A message that occurs, when any type of input failure happens */
    public void failureMessage(String title, String mainMessage, String littleMessage)
    {
        JOptionPane.showMessageDialog(
            this, 
            "<html>"+
            "<font size='+0'>"+mainMessage+"</font></html>"+"\n"+
            littleMessage,
            title, 
            JOptionPane.ERROR_MESSAGE,
            null
        );
    }








    public void actionPerformed(ActionEvent e)
    {
        String c = e.getActionCommand();
        
        //"calculate" is pressed
        if(c.equals("b"))
        {
            //check if values are entered
            if( weightInput.getText().length() <1 || heightInput.getText().length() <1 )
            {
                failureMessage("No data prompted","You didn't enter enough values!", "Please complete your input.");
           } else
           {
               try{
                   
                   byte weight = Byte.parseByte( weightInput.getText() ); //gets the weight
                   byte height = Byte.parseByte( heightInput.getText() ); //gets the height
                   
                   
                   //calculate the BMI
                   BMIvalue = BMI.getBMI( weight, height, sex );
                
                   //format the lenght of the returned value
                   DecimalFormat df = new DecimalFormat("0.0"); //format: xxx.x
                
                   bmiLabel.setText("Your BMI is: "+df.format(BMIvalue) );
                   
                   
                   /** Calculate min and maxWeight */
                   
                   //get the MinWeight and display it
                   minWeight.setText("Minimum weight: "+df.format( BMI.getMinWeight(height, sex) )+" kg" );
                   
                   //get the MaxWeight and display it
                   maxWeight.setText("Maximal weight: "+df.format( BMI.getMaxWeight(height, sex) )+" kg" );
                   
            } catch (NumberFormatException e1)
            {
                failureMessage("Wrong format!", "The data you have entered has the wrong format!", "Only use numbers and no commas, please.");
            }
          }
        }
    }

}
 

Illuvatar

Top Contributor
Dass ich nicht weiß, was ich sagen soll.
Willst du zum Codestil Anmerkungen? Testen kann mans nicht, weil Klassen fehlen.
 

Heiko

Bekanntes Mitglied
Illuvatar hat gesagt.:
Dass ich nicht weiß, was ich sagen soll.
Willst du zum Codestil Anmerkungen? Testen kann mans nicht, weil Klassen fehlen.

Ich schließe mich dieser Meinung an, sag was du wissen möchtest, dann wird dir auch geholfen.
 

citizen_erased

Bekanntes Mitglied
ich finde es schlecht, wenn ein gui element (extens JFrame) gleichzeitig auf ereignisse lauschen muss (implements XXXListener).
 

Grizzly

Top Contributor
citizen_erased hat gesagt.:
ich finde es schlecht, wenn ein gui element (extens JFrame) gleichzeitig auf ereignisse lauschen muss (implements XXXListener).
Ja, das sollte man vielleicht in einer inneren Klasse lösen.
 
B

Beni

Gast
Code:
static Menu mb = null; //the menu
   
    static JTextField heightInput = new JTextField(); //TextField for the body height
    static JTextField weightInput = new JTextField(); //TextField for the weight
   
    static JLabel bmiLabel;  //The BMI
    static JLabel minWeight; //The minimum weight you should have at you size (BMI = 18,9)
    static JLabel maxWeight; //The maximum weight you should have at your size (BMI = 24,9)
   
    static JComboBox systemBox; //The ComboBox to select the measuring system
   
    static byte BMIvalue; //the BMI
   
    static char sex; //the users sex

Ich finds äusserst schlecht, wenn man "static" an einem Ort einsetzt, wo es absolut nix zu suchen hat.
Denn so kann nur ein einziges MainFrame erstellt werden. (Und so wirklich OOP ist das auch nicht...)

[ Edit: und diese Variablen sollten auch private sein, schliesslich gehen sie nur das MainFrame was an. Andere Klassen sollten, wenn überhaubt, mit einem Getter / Setter zugreiffen. ]
 

Troilus

Mitglied
Code:
/* creates an array in wich the symbols of the measuring systems are stored 
        * 0: [cm][kg] 
        * 1: [foot] [lbs] 
        */ 
        final String[][] mesSystem = new String[2][2]; 
              mesSystem[0][0] = "cm"; mesSystem[0][1] = "kg"; 
              mesSystem[1][0] = "foot"; mesSystem[1][1] = "lbs";

Wozu definiert man sowas in nem 2-dimensionalen Array. Zudem benutzt du das net mals^^

Und ich find auch das du mal alles private setzen solltest was nicht von anderen Klassen benötigt wird bzw ich schliess mich im Rest mal Beni an. (getter/setter fehlen + Geheimnisprinzip (oder wie das heisst) wär scho was :))
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
U Wie genau funktioniert 2dgraphics, in diesem Bezug? AWT, Swing, JavaFX & SWT 4
B Wie erstelle ich eine JavaFX Anwendung von diesem Code? AWT, Swing, JavaFX & SWT 3
B JButton erscheint in JFrame, obwohl er diesem nicht zugeordnet wurde! AWT, Swing, JavaFX & SWT 1
S Button und Vererbung von diesem AWT, Swing, JavaFX & SWT 14
GUI-Programmer LayoutManager NullLayout - Ist es auch in diesem Fall schlecht? AWT, Swing, JavaFX & SWT 3
A Was haltet Ihr von diesem workaround? AWT, Swing, JavaFX & SWT 3
T Warum keine ScrollBars in diesem ScrollPane? AWT, Swing, JavaFX & SWT 3
comp_math Code snippets AWT, Swing, JavaFX & SWT 3
G JavaFX Code in neues Projekt übernehmen AWT, Swing, JavaFX & SWT 0
princess_sara1997 .jar Datei führt den Code nicht richtig aus AWT, Swing, JavaFX & SWT 19
S Ich bringe Code mit JavaFX unter Apache NetBeans IDE 12.6 nicht zum laufen. AWT, Swing, JavaFX & SWT 14
U Kann man den Code umschreiben? AWT, Swing, JavaFX & SWT 8
U Code doch nicht austauschbar in 2DGraphics AWT, Swing, JavaFX & SWT 2
K Bekomme (u.a) javafx.fxml.LoadException trotz "korrektem" Code AWT, Swing, JavaFX & SWT 8
M JavaFX kann man da noch was am code vereinfachen design technisch sieht nicht richtig aus... AWT, Swing, JavaFX & SWT 15
S ActionEvent Press Enter per Code auslösen AWT, Swing, JavaFX & SWT 22
T FXML Datei in Java Code einbinden: javafx.fxml.LoadException AWT, Swing, JavaFX & SWT 2
CptK Ordentlicher Code & Panel ab bestimmter Komponentenzahl scrollbar machen AWT, Swing, JavaFX & SWT 12
T Anderen Java Code durch Code kompilieren und Fehler in Label ausgeben AWT, Swing, JavaFX & SWT 5
L Verbindung von Code und JFrame AWT, Swing, JavaFX & SWT 4
M Swing Code funktioniert auf Windows aber nicht Linux... AWT, Swing, JavaFX & SWT 3
T JavaFX Falscher Wert getLayoutBounds? + Tipps zum Code-Aufbau? AWT, Swing, JavaFX & SWT 8
S JavaFX JavaScript Code in WebView/WebEngine AWT, Swing, JavaFX & SWT 0
L JavaFX GUI mit JavaFX. Scene Builder source code? AWT, Swing, JavaFX & SWT 6
V JavaFX Button Controller Fehler, trotz Erfolg in einem anderem Code? AWT, Swing, JavaFX & SWT 7
Ernesto95 JavaFX FXML vs. Java Code AWT, Swing, JavaFX & SWT 3
T Hilfe bei Code AWT, Swing, JavaFX & SWT 2
D JavaFX Beim Schließen (Rotes X) Code ausführen AWT, Swing, JavaFX & SWT 1
D JavaFX Dynamisch erzeugte Buttons sollen Code ausführen. AWT, Swing, JavaFX & SWT 2
T Tab per Code wechseln? AWT, Swing, JavaFX & SWT 3
C Swing GUI extrem langsam - GUI-Code richtig ausführen AWT, Swing, JavaFX & SWT 1
U Bild innerhalb hatml code anzeigen AWT, Swing, JavaFX & SWT 5
N JOGL-Code != C OpenGL-Code? AWT, Swing, JavaFX & SWT 9
R Source-Code, Javadoc AWT, Swing, JavaFX & SWT 16
S NetBeans GUI Builder - Code-Platzierung AWT, Swing, JavaFX & SWT 3
J Sauberer Gui-Code? AWT, Swing, JavaFX & SWT 22
B Color String Code AWT, Swing, JavaFX & SWT 3
D JFreeChart - aktuelle code beispiele AWT, Swing, JavaFX & SWT 11
T Bei Klick Code ausführen AWT, Swing, JavaFX & SWT 17
J JMenuBar ist geaddet, aber nicht im Frame. Wo ist der Fehler? (inkl. Code) AWT, Swing, JavaFX & SWT 2
B Swing Laden von serialisierten Objekten (invalid type code AC)) AWT, Swing, JavaFX & SWT 3
S Swing Scrollpanes: wie kann ich durch Java-Code an den "Anfang" scrollen AWT, Swing, JavaFX & SWT 8
J prinzipielles verständnis für Oberfläche/Code-trennung AWT, Swing, JavaFX & SWT 5
A Applet Applet aus Code neu starten AWT, Swing, JavaFX & SWT 2
C 2D-Grafik BufferedImage laden, Frage zum Code AWT, Swing, JavaFX & SWT 2
M JFileChooser setCurrentDirectory() - Verzeichnis relativ zum Code/binary AWT, Swing, JavaFX & SWT 14
L ListSelectionListener durch Code auslösen AWT, Swing, JavaFX & SWT 3
S 2D-Grafik Warum funktioniert dieser Code ? (GUI) AWT, Swing, JavaFX & SWT 9
M ActionListener mit code!!! auslösen AWT, Swing, JavaFX & SWT 3
hdi SWT Shell: Auslagerung von Code verändert Verhalten AWT, Swing, JavaFX & SWT 6
data89 Code-completion-window erzeugen - wie? AWT, Swing, JavaFX & SWT 2
C JTree per code selektierte Node wird nicht farbig hinterlegt AWT, Swing, JavaFX & SWT 2
K Swing GUI code tutorials? AWT, Swing, JavaFX & SWT 5
P Swing [gelöst/erledigt] Gleicher Code läuft unterschiedlich unter Linux und Windows AWT, Swing, JavaFX & SWT 5
G Code Blöcke AWT, Swing, JavaFX & SWT 6
S swt table mit checkboxen: wie nachträglich im code setzen? AWT, Swing, JavaFX & SWT 6
PAX Iconified JFrame per Code wieder anzeigen lassen (deiconify) AWT, Swing, JavaFX & SWT 2
O Source Code für "javax.swing.JLabel" ? AWT, Swing, JavaFX & SWT 2
T Öffnen von SWT-Dialogboxen durch HTML-Link in HTML-Code AWT, Swing, JavaFX & SWT 4
Z habe code, habe fehler, habe keine lösung AWT, Swing, JavaFX & SWT 7
P HTMLDocument in einem JTextPane. Anhängen von HTML-Code AWT, Swing, JavaFX & SWT 2
R Sun tutorial code von jcombobox mit image im combobox fehlt! AWT, Swing, JavaFX & SWT 3
S Unterschiedliche Optik trotz gleicher Look and Feel Code? AWT, Swing, JavaFX & SWT 11
M Code umbauen ? AWT, Swing, JavaFX & SWT 7
C GUI passt sich nicht dem Code an! AWT, Swing, JavaFX & SWT 4
7 Latex/MathML Code in JTextPane AWT, Swing, JavaFX & SWT 2
B Code Architektur verbessern. AWT, Swing, JavaFX & SWT 4
R Syntax Highlighting von Java-Code AWT, Swing, JavaFX & SWT 2
O Swing Event / in GUI oder im Code ausgelöst ? AWT, Swing, JavaFX & SWT 2
J eventhandling / Problemmeldung Bitte schaut euch den Code an AWT, Swing, JavaFX & SWT 2
M Code Schloss AWT, Swing, JavaFX & SWT 11
C wysiwyg Editor zum Einbinden in meinem Code AWT, Swing, JavaFX & SWT 14
m@nu JComboBox & ItemListener: per Code 1. Item wählen AWT, Swing, JavaFX & SWT 2
M Mit JTextPane erstelltes Dokument als HTML-Code ausgeben AWT, Swing, JavaFX & SWT 4
H Code nach dem schließen eines Fensters ausführen? AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben