Swing GUI mit ComboBox, wenn Item ausgewählt wurde neues GUI

Alex2013

Bekanntes Mitglied
Hallo Leute,

ich habe folgendes Problem. Ich habe eine Oberfläche in der der Nutzer zwei Einheiten als Angaben eingibt und eine andere Einheit alsLösung bekommt. Jetzt soll der Nutzer aber, wenn er über die ComboBox eine andere Einheit auswählt (Es gibt nur drei Einheiten und eine von dreien wird immer als Lösung ausgegeben) in die anderen zwei Einheiten Angaben tätigen können.
Es gibt die Einheiten: Geschwindigkeit, Strecke, Zeit.
Wenn also die Einheit Geschwindigkeit gewählt wurde, muss der Nutzer noch die Strecke sowie die Zeit eingeben. Hat er die Zeit gewählt, muss er noch die Geschwindigkeit und die Strecke eingeben.

Jetzt meine Frage: Soll ich dafür drei unterschiedliche Konstruktoren erstellen oder eher ein JPanel in das ich alle Komponenten einfüge oder hat jemand noch eine andere Lösung bzw. einen anderen Tipp?

Hier der Code wie die GUI aktuell aussieht:

Java:
[code]
import java.awt.Color;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

public class Strecke_Zeit_Geschwindigkeit_grafisch extends JFrame implements ActionListener 
{
	private static final long serialVersionUID = 1L;
	Container c;
	JButton berechnen,allesLoeschen;
	String gst[]={"Geschwindigkeit","Strecke","Zeit"};
	JComboBox umrechner;
	JLabel geschwindigkeit,strecke,zeit,ergebnis;
	JTextField eingGeschw,eingStr,eingZeit;
	
	public Strecke_Zeit_Geschwindigkeit_grafisch(String titel)
	{
		c=getContentPane();
		setLayout(new GridLayout(5,2));
		setSize(500, 300);
		setLocation(200,200);
		c.add(geschwindigkeit=new JLabel("Geschwindigkeit: "));
		geschwindigkeit.setToolTipText("Bitte geben Sie ihre Geschwindigkeit in Km/h ein");
		c.add(eingGeschw=new JTextField(10));
		c.add(strecke=new JLabel("Strecke: "));
		strecke.setToolTipText("Bitte geben Sie ihre Strecke in Km ein");
		c.add(eingStr=new JTextField(10));
		c.add(zeit=new JLabel("Zeit: "));
		c.add(ergebnis=new JLabel());
		ergebnis.setOpaque(true);
		ergebnis.setBackground(Color.WHITE);
		c.add(umrechner=new JComboBox(gst));
		c.add(berechnen=new JButton("berechnen"));
		berechnen.addActionListener(this);
		c.add(allesLoeschen=new JButton("Alles loeschen"));
		allesLoeschen.addActionListener(this);
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	
	public static void main(String[] args) 
	{
		new Strecke_Zeit_Geschwindigkeit_grafisch("Strecke Zeit Geschwindigkeitsumrechner");
	}

	public double zeit(double zahl1,double zahl2)
    {
		double zeit;
    	return zeit=((zahl2/zahl1)*100)/100.; 
    }
	
	public double geschwindigkeit(double zahl1,double zahl2)
	{
		double geschwindigkeit;
		return geschwindigkeit=((zahl1/zahl2)*100)/100.;
	}
	
	public double strecke(double zahl1,double zahl2)
	{
		double strecke;
		return strecke=((zahl1*zahl2)*100)/100.;
	}
	
	@Override
	public void actionPerformed(ActionEvent e) 
	{
		if(e.getActionCommand().equals("Alles loeschen"))
		{
			eingGeschw.setText("");
			eingStr.setText("");
			ergebnis.setText("");
		}
		else if(e.getActionCommand().equals("berechnen"))
		{
			try
	        {
	        	if(umrechner.getSelectedItem().equals("Geschwindigkeit"))
	        	{
	        		
	        		double zahl1=Double.parseDouble(eingStr.getText());
	        		double zahl2=Double.parseDouble(eingZeit.getText());
	        		
	        		ergebnis.setText(""+geschwindigkeit(zahl1, zahl2));
	        	}
	        	else if(umrechner.getSelectedItem().equals("Zeit"))
	        	{
	        		double zahl1=Double.parseDouble(eingGeschw.getText());
	        		double zahl2=Double.parseDouble(eingStr.getText());
	        		
	        		ergebnis.setText(""+zeit(zahl1,zahl2));
	        	}
	        	else if(umrechner.getSelectedItem().equals("Strecke"))
	        	{
	        		double zahl1=Double.parseDouble(eingGeschw.getText());
	        		double zahl2=Double.parseDouble(eingZeit.getText());
	        		
	        		ergebnis.setText(""+strecke(zahl1,zahl2));
	        	}
	        }
	        catch(Exception e1)
	        {
	        	JOptionPane.showMessageDialog(null,"Fehler","Ihre Eingabe befindet sich nicht um gueltigen Bereich!"
	        										+"Bitte geben Sie erneut Zahlen ein",JOptionPane.ERROR_MESSAGE);
	        }
		}
	}

}



//Berechnungen
/*double strecke = 0;
double zeit = 0;
double geschwindigkeit;
geschwindigkeit = ((strecke / zeit)*100)/100.;
zeit = ((strecke / geschwindigkeit)*100)/100.;
strecke = ((geschwindigkeit * zeit)*100)/100.;*/
[/code]

Falls das Thema schon existiert, bin ich über einen Link als Antwort zu dem betreffenden Thema dankbar. Ich habe bei einer Suche gerade kein Thema gefunden, was exakt dieses Problem beschreibt, daher öffne ich ein neues Thema und wäre für hilfreiche Antworten dankbar 🙂

Lg
 
Ich würde abhängig von der Auswahl (Listener für die ComboBox) die Felder beschriften. Beim Klick auf den Berechnen-Button prüfen ob die Felder gefüllt sind, Fehler handeln wenn nicht, ansonsten berechnen.
 
Ich habe es jetzt mal so probiert, wie du vorgeschlagen hast, aber es tut sich am Button leider noch gar nichts... :-(

Hier der Code:

Java:
[code]
import java.awt.Color;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

public class Strecke_Zeit_Geschwindigkeit_grafisch extends JFrame implements ActionListener 
{
	private static final long serialVersionUID = 1L;
	Container c;
	JButton berechnen,allesLoeschen;
	String gst[]={"Geschwindigkeit","Strecke","Zeit"};
	JComboBox umrechner;
	JLabel geschwindigkeit,strecke,zeit,ergebnis;
	JTextField eingGeschw,eingStr,eingZeit;
	
	public Strecke_Zeit_Geschwindigkeit_grafisch(String titel)
	{	//Geschwindigkeit und Strecke 		Die zeit wird gesucht
		c=getContentPane();
		setLayout(new GridLayout(5,2));
		setSize(500, 300);
		setLocation(200,200);
		
		geschwindigkeit=new JLabel("Geschwindigkeit: ");
		eingGeschw=new JTextField(10);
		geschwindigkeit.setToolTipText("Bitte geben Sie ihre Geschwindigkeit in Km/h ein");
		strecke=new JLabel("Strecke: ");
		strecke.setToolTipText("Bitte geben Sie ihre Strecke in Km ein");
		eingStr=new JTextField(10);
		zeit=new JLabel("Zeit: ");
		ergebnis=new JLabel();
		ergebnis.setOpaque(true);
		ergebnis.setBackground(Color.WHITE);
		umrechner=new JComboBox(gst);
		berechnen=new JButton("berechnen");
		berechnen.addActionListener(this);
		allesLoeschen=new JButton("Alles loeschen");
		allesLoeschen.addActionListener(this);
		c.add(geschwindigkeit);
		c.add(eingGeschw);
		c.add(strecke);
		c.add(eingStr);
		c.add(zeit);
		c.add(ergebnis);
		c.add(umrechner);
		c.add(berechnen);
		c.add(allesLoeschen);
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
		
	public static void main(String[] args) 
	{
		new Strecke_Zeit_Geschwindigkeit_grafisch("Strecke Zeit Geschwindigkeitsumrechner");
	}

	public double zeit(double zahl1,double zahl2)
    {
		double zeit;
    	return zeit=((zahl2/zahl1)*100)/100.; 
    }
	
	public double geschwindigkeit(double zahl1,double zahl2)
	{
		double geschwindigkeit;
		return geschwindigkeit=((zahl1/zahl2)*100)/100.;
	}
	
	public double strecke(double zahl1,double zahl2)
	{
		double strecke;
		return strecke=((zahl1*zahl2)*100)/100.;
	}
	
	@Override
	public void actionPerformed(ActionEvent e) 
	{
		if(e.getActionCommand().equals("Alles loeschen"))
		{
			eingGeschw.setText("");
			eingStr.setText("");
			ergebnis.setText("");
		}
		else if(e.getActionCommand().equals("berechnen"))
		{
			try
	        {
	        	if(umrechner.getSelectedItem().equals("Geschwindigkeit"))
	        	{
	        		double zahl1=Double.parseDouble(eingStr.getText());
	        		double zahl2=Double.parseDouble(eingZeit.getText());
	        		
	        		ergebnis.setText(""+geschwindigkeit(zahl1, zahl2));
	        	}
	        	else if(umrechner.getSelectedItem().equals("Zeit"))
	        	{
	        		double zahl1=Double.parseDouble(eingGeschw.getText());
	        		double zahl2=Double.parseDouble(eingStr.getText());
	        		
	        		ergebnis.setText(""+zeit(zahl1,zahl2));
	        	}
	        	else if(umrechner.getSelectedItem().equals("Strecke"))
	        	{
	        		double zahl1=Double.parseDouble(eingGeschw.getText());
	        		double zahl2=Double.parseDouble(eingZeit.getText());
	        		
	        		ergebnis.setText(""+strecke(zahl1,zahl2));
	        	}
	        }
	        catch(Exception e1)
	        {
	        	JOptionPane.showMessageDialog(null,"Fehler","Ihre Eingabe befindet sich nicht um gueltigen Bereich!"
	        										+"Bitte geben Sie erneut Zahlen ein",JOptionPane.ERROR_MESSAGE);
	        }
		}
	}
	
	class ComboBoxListener implements ItemListener
	{
		@Override
		public void itemStateChanged(ItemEvent e) 
		{
			if(e.getSource().equals("Geschwindigkeit"))
			{
				geschwindigkeit=new JLabel("Geschwindigkeit: ");
				eingGeschw.setEnabled(false);
				strecke=new JLabel("Strecke: ");
				strecke.setToolTipText("Bitte geben Sie ihre Strecke in Km ein");
				eingStr=new JTextField(10);
				zeit=new JLabel("Zeit: ");
				zeit.setToolTipText("Bitte geben Sie die Zeit ein die Sie benoetigen wollen");
				eingZeit=new JTextField(10);
				ergebnis=new JLabel();
				ergebnis.setOpaque(true);
				ergebnis.setBackground(Color.WHITE);
				umrechner=new JComboBox(gst);
				berechnen=new JButton("berechnen");
				berechnen.addActionListener((ActionListener) this);
				allesLoeschen=new JButton("Alles loeschen");
				allesLoeschen.addActionListener((ActionListener) this);
			}
			else if(e.getSource().equals("Strecke"))
			{
				strecke=new JLabel("Strecke: ");
				eingStr.setEnabled(false);
				geschwindigkeit=new JLabel("Geschwindigkeit: ");
				geschwindigkeit.setToolTipText("Bitte geben Sie ihre Geschwindigkeit in Km/h ein");
				eingGeschw=new JTextField(10);
				zeit=new JLabel("Zeit: ");
				zeit.setToolTipText("Bitte geben Sie die Zeit ein die Sie benoetigen wollen");
				eingZeit=new JTextField(10);
				ergebnis=new JLabel();
				ergebnis.setOpaque(true);
				ergebnis.setBackground(Color.WHITE);
				umrechner=new JComboBox(gst);
				berechnen=new JButton("berechnen");
				berechnen.addActionListener((ActionListener) this);
				allesLoeschen=new JButton("Alles loeschen");
				allesLoeschen.addActionListener((ActionListener) this);
			}//Ich habe es auch mit e.getItem().equals... probiert und mit einer anderen Variante, es hat aber nichts //funktioniert
			else if(e.getSource().equals("Zeit"))
			{
				zeit=new JLabel("Zeit: ");
				eingZeit.setEnabled(false);
				geschwindigkeit=new JLabel("Geschwindigkeit: ");
				geschwindigkeit.setToolTipText("Bitte geben Sie ihre Geschwindigkeit in Km/h ein");
				eingGeschw=new JTextField(10);
				strecke=new JLabel("Strecke: ");
				strecke.setToolTipText("Bitte geben Sie ihre Strecke in Km ein");
				eingStr=new JTextField(10);
				ergebnis=new JLabel();
				ergebnis.setOpaque(true);
				ergebnis.setBackground(Color.WHITE);
				umrechner=new JComboBox(gst);
				berechnen=new JButton("berechnen");
				berechnen.addActionListener((ActionListener) this);
				allesLoeschen=new JButton("Alles loeschen");
				allesLoeschen.addActionListener((ActionListener) this);
			}
					
		}
	}
}



//Berechnungen
/*double strecke = 0;
double zeit = 0;
double geschwindigkeit;
geschwindigkeit = ((strecke / zeit)*100)/100.;
zeit = ((strecke / geschwindigkeit)*100)/100.;
strecke = ((geschwindigkeit * zeit)*100)/100.;*/
[/code]

Wüsstest du vielleicht woran es liegt, oder hast du einen Tipp?
 
So, ich hab das mal korrigiert. Warum bei dir nichts funktionierte mit der ComboBox lag an den Vergleichen bei itemStateChanged. e.getSource ist nicht der Inhalt sondern die Komponente an sich (also die Box). Du musst noch einen Schritt weiter und den aktuell selektierten Inhalt der Box nehmen.
Weiterhin war es nicht nötig beim ändern der Auswahl alle Komponenten neu zu erstellen etc. Du musst nur die richtigen Felder ausblenden und Inhalte löschen, oder was auch immer du machen magst.
Achso und es fehlte das Textfeld für die Zeit. Das habe ich auch noch hinzugefügt. Und ausserdem fehlte noch
Code:
umrechner.addItemListener()
. Der Listener war also auch gar nicht angehangen.

Java:
import java.awt.Color;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

public class Strecke_Zeit_Geschwindigkeit_grafisch extends JFrame implements ActionListener {

	private static final long serialVersionUID = 1L;
	Container c;
	JButton berechnen, allesLoeschen;
	String gst[] = { "Geschwindigkeit", "Strecke", "Zeit" };
	JComboBox<String> umrechner;
	JLabel geschwindigkeit, strecke, zeit, ergebnis;
	JTextField eingGeschw, eingStr, eingZeit;

	public Strecke_Zeit_Geschwindigkeit_grafisch(String titel) {
		c = getContentPane();
		setLayout(new GridLayout(5, 2));
		setSize(500, 300);
		setLocation(200, 200);
		geschwindigkeit = new JLabel("Geschwindigkeit: ");
		eingGeschw = new JTextField(10);
		geschwindigkeit.setToolTipText("Bitte geben Sie ihre Geschwindigkeit in Km/h ein");
		
		strecke = new JLabel("Strecke: ");
		strecke.setToolTipText("Bitte geben Sie ihre Strecke in Km ein");
		eingStr = new JTextField(10);
		
		zeit = new JLabel("Zeit: ");
		eingZeit = new JTextField(10);
		
		ergebnis = new JLabel();
		ergebnis.setOpaque(true);
		ergebnis.setBackground(Color.WHITE);
		
		umrechner = new JComboBox<String>(gst);
		umrechner.addItemListener(new ComboBoxListener());
		
		berechnen = new JButton("berechnen");
		berechnen.addActionListener(this);
		
		allesLoeschen = new JButton("Alles loeschen");
		allesLoeschen.addActionListener(this);
		
		c.add(geschwindigkeit);
		c.add(eingGeschw);
		c.add(strecke);
		c.add(eingStr);
		c.add(zeit);
		c.add(eingZeit);
		c.add(umrechner);
		c.add(ergebnis);
		c.add(berechnen);
		c.add(allesLoeschen);
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	public static void main(String[] args) {
		new Strecke_Zeit_Geschwindigkeit_grafisch("Strecke Zeit Geschwindigkeitsumrechner");
	}

	public double zeit(double zahl1, double zahl2) {
		return (((zahl2 / zahl1) * 100) / 100.);
	}

	public double geschwindigkeit(double zahl1, double zahl2) {
		return (((zahl1 / zahl2) * 100) / 100.);
	}

	public double strecke(double zahl1, double zahl2) {
		return (((zahl1 * zahl2) * 100) / 100.);
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		if (e.getActionCommand().equals("Alles loeschen")) {
			eingGeschw.setText("");
			eingStr.setText("");
			ergebnis.setText("");
		} else if (e.getActionCommand().equals("berechnen")) {
			try {
				if (umrechner.getSelectedItem().equals("Geschwindigkeit")) {
					double zahl1 = Double.parseDouble(eingStr.getText());
					double zahl2 = Double.parseDouble(eingZeit.getText());
					ergebnis.setText("" + geschwindigkeit(zahl1, zahl2));
				} else if (umrechner.getSelectedItem().equals("Zeit")) {
					double zahl1 = Double.parseDouble(eingGeschw.getText());
					double zahl2 = Double.parseDouble(eingStr.getText());
					ergebnis.setText("" + zeit(zahl1, zahl2));
				} else if (umrechner.getSelectedItem().equals("Strecke")) {
					double zahl1 = Double.parseDouble(eingGeschw.getText());
					double zahl2 = Double.parseDouble(eingZeit.getText());
					ergebnis.setText("" + strecke(zahl1, zahl2));
				}
			} catch (Exception e1) {
				JOptionPane.showMessageDialog(null, "Fehler", "Ihre Eingabe befindet sich nicht um gueltigen Bereich!"
						+ "Bitte geben Sie erneut Zahlen ein", JOptionPane.ERROR_MESSAGE);
			}
		}
	}

	class ComboBoxListener implements ItemListener {
		@Override
		public void itemStateChanged(ItemEvent e) {
			if (e.getSource() instanceof JComboBox) {
				JComboBox<String> comp = (JComboBox<String>) e.getSource();
				if (comp.getSelectedItem().equals("Geschwindigkeit")) {
					eingGeschw.setEnabled(false);
					eingStr.setEnabled(true);
					eingZeit.setEnabled(true);
					eingGeschw.setText("");
					eingStr.setText("");
					eingZeit.setText("");
				} else if (comp.getSelectedItem().equals("Strecke")) {
					eingGeschw.setEnabled(true);
					eingStr.setEnabled(false);
					eingZeit.setEnabled(true);
					eingGeschw.setText("");
					eingStr.setText("");
					eingZeit.setText("");
				} else if (comp.getSelectedItem().equals("Zeit")) {
					eingGeschw.setEnabled(true);
					eingStr.setEnabled(true);
					eingZeit.setEnabled(false);
					eingGeschw.setText("");
					eingStr.setText("");
					eingZeit.setText("");
				}
			}
		}
	}
}
 
Zuletzt bearbeitet:
Ich habe den Code jetzt an der Stelle mal so übernommen wie du ihn gepostet hast und ihn noch minimal abgewandelt und es funktioniert! 🙂
Ich habe mir so etwas in der Art schon gedacht, nur wusste ich nicht genau, wie ich es umsetzen sollte und habe dann doch etwas anders gemacht ;-)
Aber so wie du den Code gepostet hast funktioniert er.
Das einzige Problem was ich jetzt noch habe, welches ich vorher so auch noch nicht hatte, ist, dass das Ergebnis, also eingStr, eingZeit, oder eingGeschw jeweils in "weiß" auf das JLabel gezeichnet wird ;-)
Gibt es da eine spezielle Methode um das zu ändern? wie z.B. setBackground() so etwas in der Art?

Aber vielen Dank für deine Hilfe, das Programm läuft jetzt 🙂
 
du hast bereits selbst ein
Code:
ergebnis.setBackground(Color.WHITE);
drin stehen gehabt, das kannst ja abändern 🙂
 
Hey, ich habe einige Variablen noch einmal angepasst, damit ich nicht den Überblick verliere...
jetzt sind sämtliche Daten korrekt zugewiesen...
Was meinst du wo sollte ich ansetzen um das ausgegebenen Ergebnis schwarz darstellen zu lassen?
Ich bin auch gerade dabei es noch einmal auszuprobieren... ;-)

Hier noch mal der Code wie es funktioniert:

Java:
[code]
import java.awt.Color;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.text.Caret;

public class Strecke_Zeit_Geschwindigkeit_grafisch extends JFrame implements ActionListener 
{
	private static final long serialVersionUID = 1L;
	Container c;
	JButton berechnen,allesLoeschen;
	String gst[]={"Geschwindigkeit","Strecke","Zeit"};
	JComboBox umrechner;
	JLabel geschwindigkeit,strecke,zeit;
	JTextField eingGeschw,eingStr,eingZeit;
	
	public Strecke_Zeit_Geschwindigkeit_grafisch(String titel)
	{	//Geschwindigkeit und Strecke 		Die zeit wird gesucht
		c=getContentPane();
		setLayout(new GridLayout(5,2));
		setSize(500, 300);
		setLocation(200,200);
		
		geschwindigkeit=new JLabel("Geschwindigkeit: ");
		geschwindigkeit.setToolTipText("Bitte geben Sie ihre Geschwindigkeit in Km/h ein");
		eingGeschw=new JTextField(10);
		
		strecke=new JLabel("Strecke: ");
		strecke.setToolTipText("Bitte geben Sie ihre Strecke in Km ein");
		eingStr=new JTextField(10);
		
		zeit=new JLabel("Zeit: ");
		zeit.setToolTipText("Bitte geben Sie die Zeit in Stunden an, die Sie fuer die Strecke benoetigen wollen");
		eingZeit=new JTextField();
		//eingZeit.setOpaque(true);
		//eingZeit.setBackground(Color.WHITE);
		umrechner = new JComboBox/*<String>*/(gst);
		umrechner.setToolTipText("Bitte waehlen Sie zunaechst die Strecke aus und anschliessend die Geschwindigkeit");
        umrechner.addItemListener(new ComboBoxListener());
		berechnen=new JButton("berechnen");
		berechnen.addActionListener(this);
		allesLoeschen=new JButton("Alles loeschen");
		allesLoeschen.addActionListener(this);
		
		c.add(geschwindigkeit);
		c.add(eingGeschw);
		c.add(strecke);
		c.add(eingStr);
		c.add(zeit);
		c.add(eingZeit);
		c.add(umrechner);
		c.add(berechnen);
		c.add(allesLoeschen);
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
		
	public static void main(String[] args) 
	{
		new Strecke_Zeit_Geschwindigkeit_grafisch("Strecke Zeit Geschwindigkeitsumrechner");
	}

	public double zeit(double zahl1,double zahl2)
    {
		double zeit;
    	return zeit=((zahl2/zahl1)*100)/100.; 
    }
	
	public double geschwindigkeit(double zahl1,double zahl2)
	{
		double geschwindigkeit;
		return geschwindigkeit=((zahl1/zahl2)*100)/100.;
	}
	
	public double strecke(double zahl1,double zahl2)
	{
		double strecke;
		return strecke=((zahl1*zahl2)*100)/100.;
	}
	
	@Override
	public void actionPerformed(ActionEvent e) 
	{
		if(e.getActionCommand().equals("Alles loeschen"))
		{
			eingGeschw.setText("");
			eingStr.setText("");
			eingZeit.setText("");
		}
		else if(e.getActionCommand().equals("berechnen"))
		{
			try
	        {
	        	if(umrechner.getSelectedItem().equals("Geschwindigkeit"))
	        	{
	        		double zahl1=Double.parseDouble(eingStr.getText());
	        		double zahl2=Double.parseDouble(eingZeit.getText());
	        		
	        		eingGeschw.setText(""+geschwindigkeit(zahl1, zahl2));
	        	}
	        	else if(umrechner.getSelectedItem().equals("Zeit"))
	        	{
	        		double zahl1=Double.parseDouble(eingGeschw.getText());
	        		double zahl2=Double.parseDouble(eingStr.getText());
	        		
	        		eingZeit.setText(""+zeit(zahl1,zahl2));
	        	}
	        	else if(umrechner.getSelectedItem().equals("Strecke"))
	        	{
	        		double zahl1=Double.parseDouble(eingGeschw.getText());
	        		double zahl2=Double.parseDouble(eingZeit.getText());
	        		
	        		eingStr.setText(""+strecke(zahl1,zahl2));
	        	}
	        }
	        catch(Exception e1)
	        {
	        	JOptionPane.showMessageDialog(null,"Fehler","Ihre Eingabe befindet sich nicht um gueltigen Bereich!"
	        										+"Bitte geben Sie erneut Zahlen ein",JOptionPane.ERROR_MESSAGE);
	        }
		}
	}
	
	class ComboBoxListener implements ItemListener
	{
		@Override
		public void itemStateChanged(ItemEvent e) 
		{
			if (e.getSource() instanceof JComboBox) 
			{
                JComboBox/*<String>*/ comp = (JComboBox/*<String>*/) e.getSource();
                if (comp.getSelectedItem().equals("Geschwindigkeit")) 
                {
                    eingGeschw.setEnabled(false);
                    eingStr.setEnabled(true);
                    eingZeit.setEnabled(true);
                    eingGeschw.setText("");
                    eingStr.setText("");
                    eingZeit.setText("");
                } 
                else if (comp.getSelectedItem().equals("Strecke")) 
                {
                    eingGeschw.setEnabled(true);
                    eingStr.setEnabled(false);
                    eingZeit.setEnabled(true);
                    eingGeschw.setText("");
                    eingStr.setText("");
                    eingZeit.setText("");
                } 
                else if (comp.getSelectedItem().equals("Zeit")) 
                {
                    eingGeschw.setEnabled(true);
                    eingStr.setEnabled(true);
                    eingZeit.setEnabled(false);
                    eingGeschw.setText("");
                    eingStr.setText("");
                    eingZeit.setText("");
                }
            }					
		}
	}
}



//Berechnungen
/*double strecke = 0;
double zeit = 0;
double geschwindigkeit;
geschwindigkeit = ((strecke / zeit)*100)/100.;
zeit = ((strecke / geschwindigkeit)*100)/100.;
strecke = ((geschwindigkeit * zeit)*100)/100.;*/
[/code]
 

Zurück
Oben