# Benzinverbrauch mit Jigloo und Eclipse



## c_sidi90 (13. Sep 2010)

Hallo Leute ich hoffe mir kann geholfen werden!

Ich habe gerade mit meiner Ausbildung begonnen und hatte leider keine Vorkenntnisse im Programmieren daher bin ich viel am lesen und lernen. Nun soll ich ich als erste Aufgabe von meinem Ausbilder ein Programm entwickeln, das den Benzinverbrauch auf 100 Km berechnet. Dafür sollte ich Jigloo als GUI verwenden. Ich habe den Code fürs Layout fertig jedoch weiss ich einfach nicht wie das anstellen soll, wenn man zahlen wie zB Liter und Strecke in km in die Textfelder einträgt im 3ten Textfeld das Ergebniss bekommt. Die Formel hierfür lautet ja Benzin*gefahrene KM/100. Ich hoffe mir kann jemand helfen.

Hier der Code
[Java]
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.LayoutStyle;

import javax.swing.WindowConstants;
import javax.swing.SwingUtilities;


/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit Cloud Garden (Java Resources) for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
public class NewJFrame extends javax.swing.JFrame {
	private JTextField jTextField1;
	private JLabel jLabel2;
	private JLabel jLabel3;
	private JButton jButton1;
	private AbstractAction berechnenAction;
	private JLabel jLabel4;
	private JLabel jLabel1;
	private JTextField jTextField3;
	private JTextField jTextField2;

	/**
	* Auto-generated main method to display this JFrame
	*/
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				NewJFrame inst = new NewJFrame();
				inst.setLocationRelativeTo(null);
				inst.setVisible(true);
			}
		});
	}

	public NewJFrame() {
		super();
		initGUI();
	}

	private void initGUI() {
		try {
			GroupLayout thisLayout = new GroupLayout((JComponent)getContentPane());
			getContentPane().setLayout(thisLayout);
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			{

				jTextField1 = new JTextField();
				jTextField1.setText("0");




			}
			{

				jTextField2 = new JTextField();
				jTextField2.setText("0");


			}
			{
				jTextField3 = new JTextField();
				jTextField3.setText ("");







			}
			{
				jLabel1 = new JLabel();
				jLabel1.setText("Benzin in Liter");
			}
			{
				jLabel2 = new JLabel();
				jLabel2.setText("Strecke in Km");
			}
			{
				jLabel3 = new JLabel();
				jLabel3.setText("Verbrauch auf 100 Km");
			}
			{
				jButton1 = new JButton();
				jButton1.setText("Berechnen");
				jButton1.setAction(getBerechnenAction());
			}
			{
				jLabel4 = new JLabel();
				jLabel4.setText("Wieviel verbraucht ihr Auto auf 100 Km ?");
			}
			thisLayout.setVerticalGroup(thisLayout.createSequentialGroup()
				.addContainerGap(59, 59)
				.addComponent(jLabel4, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)
				.addGap(44)
				.addGroup(thisLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
				    .addComponent(jLabel1, GroupLayout.Alignment.BASELINE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)
				    .addComponent(jLabel2, GroupLayout.Alignment.BASELINE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)
				    .addComponent(jLabel3, GroupLayout.Alignment.BASELINE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE))
				.addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
				.addGroup(thisLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
				    .addComponent(jTextField1, GroupLayout.Alignment.BASELINE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)
				    .addComponent(jTextField2, GroupLayout.Alignment.BASELINE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)
				    .addComponent(jTextField3, GroupLayout.Alignment.BASELINE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE))
				.addGap(23)
				.addComponent(jButton1, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)
				.addContainerGap(58, Short.MAX_VALUE));
			thisLayout.setHorizontalGroup(thisLayout.createSequentialGroup()
				.addContainerGap(38, 38)
				.addGroup(thisLayout.createParallelGroup()
				    .addGroup(thisLayout.createSequentialGroup()
				        .addGroup(thisLayout.createParallelGroup()
				            .addComponent(jTextField1, GroupLayout.Alignment.LEADING, GroupLayout.PREFERRED_SIZE, 66, GroupLayout.PREFERRED_SIZE)
				            .addComponent(jLabel1, GroupLayout.Alignment.LEADING, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE))
				        .addGap(44)
				        .addGroup(thisLayout.createParallelGroup()
				            .addComponent(jTextField2, GroupLayout.Alignment.LEADING, GroupLayout.PREFERRED_SIZE, 64, GroupLayout.PREFERRED_SIZE)
				            .addGroup(thisLayout.createSequentialGroup()
				                .addGap(0, 0, Short.MAX_VALUE)
				                .addComponent(jLabel2, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE))
				            .addGroup(thisLayout.createSequentialGroup()
				                .addGap(0, 0, Short.MAX_VALUE)
				                .addComponent(jButton1, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)))
				        .addGap(39)
				        .addGroup(thisLayout.createParallelGroup()
				            .addComponent(jTextField3, GroupLayout.Alignment.LEADING, GroupLayout.PREFERRED_SIZE, 106, GroupLayout.PREFERRED_SIZE)
				            .addComponent(jLabel3, GroupLayout.Alignment.LEADING, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)))
				    .addGroup(GroupLayout.Alignment.LEADING, thisLayout.createSequentialGroup()
				        .addGap(59)
				        .addComponent(jLabel4, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)
				        .addGap(0, 65, Short.MAX_VALUE)))
				.addContainerGap(34, 34));
			pack();
			setSize(400, 300);
		} catch (Exception e) {
		    //add your error handling code here
			e.printStackTrace();
		}
	}

	private AbstractAction getBerechnenAction() {
		if(berechnenAction == null) {
			berechnenAction = new AbstractAction("berechnen", null) {
				public void actionPerformed(ActionEvent evt) {
				}
			};
		}
		return berechnenAction; 
	}

}
[/code]

Vielen Dank


----------



## XHelp (13. Sep 2010)

Jigloo ist keine GUI, sondern ein GUI-Builder.
Da gibt es einen ganzen Tab voll mit Events, dort brauchst du einen ActionListener auf deinem Button. Es wird dann ausgeführt, wenn du auf den Button klickst.
Vllt solltest du dir erstmal ein paar passende Kapitel aus dem Insel-Buch lesen, damit du überhaupt eine vorstellung davon bekommst was da vorgeht.


----------



## SlaterB (13. Sep 2010)

stolzes Programm,

sowas hier auch schon gesehen?

```
public class Test {
    public static void main(String[] args) {
       int benzin =22;
       int strecke = 500;
       double pro100 = ?; // hier weiter programmieren
       System.out.println("Verbrauch: "+pro100);
    }
}
```


----------



## c_sidi90 (13. Sep 2010)

Danke für die schnellen Antworten, ich habe bereits auf den button eine abstractAction Funktion erstellt. Jedoch ist es mir ein Rätsel wie ich diese auf die Textfeld legen kann sodass er die Formel auf den Inhalt der Textfelder anwendet und im dritten wiedergibt. Im Code selbst die Werte einzutragen und das Ergebniss zu erhalten ist ja nicht Sinn und Zweck der Sache. Der Anwender soll ja selbst im Programm die Werte eintragen können. 

Mfg


----------



## w0ddes (13. Sep 2010)

```
private AbstractAction getBerechnenAction() {
        if(berechnenAction == null) {
            berechnenAction = new AbstractAction("berechnen", null) {
                public void actionPerformed(ActionEvent evt) {
                  //Pseudocode begin
                   int benzin = // hole aus TextFeld 1;
                   int strecke = // hole aus TextFeld 2;
                   double pro100 = ?; // hier weiter programmieren
                   labelVerbrauch  //text setzen ;) 

                  //pseudocode end 
                }
            };
        }
        return berechnenAction;
```

Ich hoffe das hilft dir  Sollst ja auch slebst noch bisschn überlegen


----------



## SlaterB (13. Sep 2010)

@c_sidi90
es ist nicht der Sinn der Sache, sondern eine gute Vorstufe,
wenn das Konsolenprogramm funktioniert, musst du es nur noch in die Action kopieren


```
action() {
       int benzin = // hole aus TextFeld 1;
       int strecke = // hole aus TextFeld 2;
       double pro100 = ?; // hier weiter programmieren
       // schreibe Ergebnis in TextFeld 3


}
```


----------



## ARadauer (13. Sep 2010)

```
private AbstractAction getBerechnenAction() {
        if(berechnenAction == null) {
            berechnenAction = new AbstractAction("berechnen", null) {
                public void actionPerformed(ActionEvent evt) {
                   int liter =  Integer.parseInt(jTextField1.getText()); // gib deinen Variablen sinnvolle Namen!!!!
                   int strecke =  Integer.parseInt(jTextField2.getText());
                   jTextField3.setText((liter*(float)strecke /100)+"");
                }
            };
        }
        return berechnenAction; 
    }
```


----------



## c_sidi90 (13. Sep 2010)

Danke für die Hilfe, der letzte Kommentar erscheint mir schon recht logisch, ich konnte es nur aufgrund meines eher kleinen Fachwissens nicht direkt in den source übertragen. Da du ja auch die selben Namen wie ich im original verwendet hast, wundert mich es doch das es immernoch nicht funktioniert?!

Mfg


----------



## jgh (13. Sep 2010)

Verbrauch ist auch nicht 
	
	
	
	





```
Liter x Strecke /100
```
, sondern 
	
	
	
	





```
Liter*100/Strecke
```





```
private AbstractAction getBerechnenAction() {
        if (berechnenAction == null) {
            berechnenAction = new AbstractAction("berechnen", null) {
                public void actionPerformed(ActionEvent evt) {
                    int liter = Integer.parseInt(jTextField1.getText()); // gib
                    // deinen
                    // Variablen
                    // sinnvolle
                    // Namen!!!!
                    int strecke = Integer.parseInt(jTextField2.getText());

                    double ergebnis = (double) liter / (double) strecke * 100d;

                    double formatiertesErgebnis = Math.round(ergebnis * 100) / 100d;

                    jTextField3.setText(formatiertesErgebnis + " Liter / 100km");
                }
            };
        }
        return berechnenAction;
    }
```


----------



## Empire Phoenix (13. Sep 2010)

ne eigentlich macht man liter auf 100km nicht 100liter auf km^^

Ich empfehle dir mit der insel einfach mla manuell ne gui zu basteln ( weil die ganzen builder eher naja sind speziell wenn man nicht weiß was sie eigentlich tun)


----------



## c_sidi90 (13. Sep 2010)

Danke für die Hilfe, hab es letztendlich mit einer anderen Lösungsart probiert und es hat funktioniert

Mfg


----------



## jgh (13. Sep 2010)

Empire Phoenix hat gesagt.:


> ne eigentlich macht man liter auf 100km nicht 100liter auf km^^



und wer will 100 Liter auf km machen?

meine o.g. Formel berechnet verbrauchte Liter auf 100 km!

Liter/Strecke = verbrauchte Liter je Strecken(km)
verbrauchte Liter je Strecken(km) x 100 = ???

und daraus lässt sich auch wunderbar  [c] Verbrauch je 100km = Liter x 100 / Strecke [/c] machen!


----------



## w0ddes (14. Sep 2010)

jgh hat gesagt.:


> und wer will 100 Liter auf km machen?
> 
> meine o.g. Formel berechnet verbrauchte Liter auf 100 km!
> 
> ...



Schlagt euch doch?! 

Liter x 100 / Strecke   IST DAS GLEICHE  wie  Liter / (Strecke/100) wobei ich persönlich auch die letztere Version lieber benutze, denn ich (Achtung, persönliche Meinung!!) finde, dass man so eher sehen kann, dass es Liter pro 100km sind!

Edit: Ah, ich seh jetzt erst, das ARadauer ja  
	
	
	
	





```
Liter * (Strecke/100)
```
 geschrieben hat! Da muss natürlich ein 
	
	
	
	





```
/
```
an Stelle des 
	
	
	
	





```
*
```
 hin


----------



## jgh (14. Sep 2010)

w0ddes hat gesagt.:


> Schlagt euch doch?!
> 
> Liter x 100 / Strecke   IST DAS GLEICHE  wie  Liter / (Strecke/100) wobei ich persönlich auch die letztere Version lieber benutze, denn ich (Achtung, persönliche Meinung!!) finde, dass man so eher sehen kann, dass es Liter pro 100km sind!



Ich gebe dir uneingeschränkt Recht!

Was mich an den Post von Empire Phoenix gestört hat ist folgendes:

[c]jTextField3.setText((liter*(float)strecke /100)+"") [/c] != Liter/ (Strecke/100)
errechnet nicht das gewünschte Ergebnis. Das habe ich mit meinen Post  klarstellen wollen, nicht mehr und nicht weniger. 

Wenn dann aber eine verbale Grätsche von hinten kommt und mir unterstellt wird, dass meine gepostete Formel 100 Liter auf km ausrechnet, finde ich es -gelinde gesagt- unhöflich .

Sei es drum...ich habe Recht und alles ist gut :lol:


----------



## w0ddes (14. Sep 2010)

Wie man meinem Edit entnehmen kann, habe ich die Diskussion falsch aufgefasst!  
Sollte natürlich niemanden angreifen oder ähnliches!


----------



## jgh (14. Sep 2010)

@w0ddes
habe ich bei dir auch nicht so verstanden....bei Empire Phoenix hatte ich das Gefühl, dass er 
-ohne nachzudenken- meinen Post als falsch interpretiert hat. Und darauf wollte ich nur hinweisen 

So genug gespammt für heute^^


----------



## SlaterB (14. Sep 2010)

w0ddes hat gesagt.:


> Edit: Ah, ich seh jetzt erst, das ARadauer ja
> 
> 
> 
> ...


noch nicht repariert genug 


```
jTextField3.setText((liter*(float)strecke /100)+""); // nicht gut
jTextField3.setText((liter/(float)strecke /100)+""); // reicht nicht
jTextField3.setText((liter/((float)strecke /100))+""); // jetzt so langsam
```


----------



## w0ddes (14. Sep 2010)

Und wegen solchen Kleinigkeiten scheitert das ganze Programm dann


----------



## c_sidi90 (14. Sep 2010)

lach


----------

