Swing zwei JComboBoxen miteinander vergleichen und anschließend Button umwandeln

Alex2013

Bekanntes Mitglied
Hallo Leute,

ich habe ein Programm bei dem ich in der einen ComboBox Geschwindigkeitseinheiten habe welche ich auswählen kann. In einer zweiten ComboBox sind ebenfalls Geschwindigkeitseinheiten definiert.
Jetzt möchte ich jeweils eine Geschwindigkeit eingeben und die dazugehörende Einheit selbst wählen, anschließend mit der zweiten ComboBox eine andere Einheit auswählen und schließlich den Button umwandeln drücken.
Kann mir jemand sagen, wie genau ich vorgehen muss um die beiden comboboxen miteinander zu vergleichen und anschließend korrekt die umwandlung durchführen zu lassen?

Hier mein Ansatz:

Java:
[code]
private boolean comboboxCompareItems(JComboBox cb1)
	{
		for (int i=0; i < cb1.getItemCount(); i++)
		{
			if (cb1.getItemAt(i)!=cb2)
			{
				return true;
			}
		}
		return false;
	}
	
	@Override
	public void actionPerformed(ActionEvent e) 
	{
		if(e.getActionCommand().equals("umwandeln"))
		{
			cb1.setSelectedIndex(comboboxCompareItems(cb1));
		}
	}
[/code]

Kann man den Vergleich auf die Weise, so wie oben beschrieben angehen oder nicht?
Ich kann auch gerne noch den kompletten Code posten.

Für Antworten wäre ich dankbar :)

Lg
 

X5-599

Top Contributor
Ich nehme an dass du mit "comboboxCompareItems()" überprüfen willst, ob in beiden ComboBoxen unterschiedliche Einträge ausgewählt sind.
Du überprüfst aber jedes Item in cb1 und vergleichst es mit cb2 (die zweite ComboBox?). Der Sinn erschliesst sich mit nicht ganz.
Um zu checken, ob unterschiedliche Einträge ausgewählt sind musst du einfach nur "getSelectedItem()" bei beiden ComboBoxen aufrufen und per equals vergleichen.

In der "actionPerformed()" Methode versuchst du das boolean Ergebnis aus deinem Vergleich per "setSelectedIndex()" zu setzen. Das kann nicht funktionierenm, da "setSelectedIndex()" ein int erwartet.
Auch brauchst du doch die Auswahl der ComboBox nicht programmatisch zu setzen. Du willst doch, dass der Benutzer beide ComboBoxen auswählt, oder?


Ich würde das selectedItem der beiden ComboBoxen abfragen:
Wenn cb1 gleich km/h und cb2 gleich mp/h dann Methode convertKmhToMph() ausführen.
Wenn cb1 gleich mp/h und cb2 gleich km/h dann Methode convertMphToKmh() ausführen.
 

Alex2013

Bekanntes Mitglied
Hey,
ich konnte den letzten Tag leider nicht mit Java arbeiten, da ich selbst nach 5min. am PC schon Kopfschmerzen bekam. Aber zurück zum Thema.

Ich habe es jetzt denke ich einmal so probiert, wie du es vorgeschlagen hast. Der Compiler zeigt mir beim Debuggen auch keine Fehler an. Allerdings, gibt er mir das Ergebnis, welches ich vorne als Zahl eintrage auch nicht hinten am letzten Label aus.
Woran kann das liegen?
Ich habe mit dem umwandeln der Werte etc. auch bei einem anderen Projekt genauso gearbeitet, dort bekomme ich Werte ausgegeben... :-(
Hast du hier evtl. einen Tipp?

Hier der glaube ich relevante Code:

Java:
[code]
static double kmhInMph(double zahl)
	{	//das Ergebnis wird der variablen zahl19 zugewiesen und gerundet und anschliessend wird das Ergebnis ueber den Rueckgabewert mit der die zahl19 zurueckgegeben wird, 
		//auf dem Bildschirm ausgegeben
		double zahl2;
		zahl2=Math.round(zahl*0.62)*100/100.;
		return zahl2;
	}
	
	static double mphInKmh(double zahl)
	{
		double zahl2;
		zahl2=Math.round(zahl/0.62)*100/100.;
		return zahl2;
	}	
	
	@Override
	public void actionPerformed(ActionEvent e) 
	{
		double zahl=0;

		if(e.getActionCommand().equals("umwandeln"))
		{
			if(cb1.getSelectedItem().equals(cb2.getSelectedItem()))
			{
				if((cb1.getSelectedItem()=="Km/h")&&(cb2.getSelectedItem()=="Mph"))
				{
					zahl=Double.parseDouble(tf1.getText());
				
					l2.setText(""+kmhInMph(zahl));
				}
			}	else if((cb1.getSelectedItem()=="Mph")&&(cb2.getSelectedItem()=="Km/h"))
				{
					zahl=Double.parseDouble(tf1.getText());
					
					l2.setText(""+mphInKmh(zahl));
			}
		}
	}
[/code]

Ich wäre dir echt dankbar, wenn du hier einen Tipp hättest :)

Lg
 

X5-599

Top Contributor
So sollte es gehen. Natürlich nur wenn die ComboBoxen Strings enthalten.

Java:
if(e.getActionCommand().equals("umwandeln"))
{
    if(cb1.getSelectedItem().equals(cb2.getSelectedItem()))
    {
        //Hier gibt es doch nichts umzuwandeln...
    }
    else if((cb1.getSelectedItem().equals("Km/h"))&&(cb2.getSelectedItem().equals("Mph")))
    {
        zahl=Double.parseDouble(tf1.getText());
           
        l2.setText(""+kmhInMph(zahl));
    }
    else if((cb1.getSelectedItem().equals("Mph"))&&(cb2.getSelectedItem().equals("Km/h")))
    {
            zahl=Double.parseDouble(tf1.getText());
                   
            l2.setText(""+mphInKmh(zahl));
    }
}

Ich sehe gerade etwas anderes. Vermutlich wolltest du mit der ersten if Abfrage sicherstellen, dass die ComboBoxen unterschiedliche Werte haben. Dann musst du den NICHT-Zusatz (Keine Ahnung wie der genau heisst) verwenden. Das "!".
Darum vermute ich dein Fehler liegt in der fehlerhaften Platzierung der letzten "else if" Anweisung:

Java:
public void actionPerformed(ActionEvent e)
{
    double zahl=0;
 
    if(e.getActionCommand().equals("umwandeln"))
    {
        if(!cb1.getSelectedItem().equals(cb2.getSelectedItem()))
        {
            if((cb1.getSelectedItem().equals("Km/h"))&&(cb2.getSelectedItem().equals("Mph")))
            {
                zahl=Double.parseDouble(tf1.getText());
               
                l2.setText(""+kmhInMph(zahl));
            }
            else if((cb1.getSelectedItem().equals("Mph"))&&(cb2.getSelectedItem().equals("Km/h")))
            {
                zahl=Double.parseDouble(tf1.getText());
                       
                l2.setText(""+mphInKmh(zahl));
            }
        }
    }
}
 
Zuletzt bearbeitet:

Alex2013

Bekanntes Mitglied
Ich habe es jetzt einmal genauso übernommen, wie du es gepostet hast. Aber es funktioniert bei mir noch immer nicht... :-(

Wüsstest du evtl. woran es noch liegen könnte oder ob man überhaupt zwei ComboBoxen miteinander vergleichn kann? was ja eigtl. gehen sollte.
Ich habe jetzt schon einige kleinere Varianten probiert, aber es klappt bei mir einfach nicht.
Also das JLabel l2 gibt keinen Text aus.

Es wäre super, wenn du noch weitere Möglichkeiten siehst, woran es liegen könnte, wenn du mir die dann mitteilen könntest, damit ich das Programm dann korrigieren kann. :) Ich weiß leider nicht mehr weiter...

Lg
 

X5-599

Top Contributor
Naja, es wird etwas an der Oberfläche geändert (der Text der Label). Evtl ist es ein repaint Problem. Vielleicht hilft ein repaint() von deinem Fenster Objekt weiter.
Dazu muss ich sagen, dass Swing und repaint/aktualisieren von Oberflächen noch nie wirklich meine Stärke war.
 

Alex2013

Bekanntes Mitglied
Mhm... habe es gerade ausprobiert. Das hat leider auch nichts gebracht... :-(
Hast du vielleicht noch einen anderen Tipp oder wie würdest du denn vorgehen um dieses Programm zu schreiben?
vielleicht bin ich ja falsch vorgegangen...
Oder würdest du es nur etwas anders schreiben?

Lg
 

Alex2013

Bekanntes Mitglied
Es lag blos an einem kleinen Rechtschreibfehler, dass es nicht funktionierte... :-(

Jetzt klappt es :)

Vielen Dank trotzdem für deine Hilfe und deine Vorschläge.

Lg
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Zwei JComboBoxen AWT, Swing, JavaFX & SWT 5
P Zwei JPanel übereianderlegen AWT, Swing, JavaFX & SWT 14
tommybalbor JavaFx Anwendung klappt nicht für macOs Nutzern, wenn ich zwei dependecies bei maven hinzufüge AWT, Swing, JavaFX & SWT 6
raeuchertofu Input bei zwei jTextfields AWT, Swing, JavaFX & SWT 5
D Layout einer scene mit ListView Elementen und Zwei Textfeldern AWT, Swing, JavaFX & SWT 1
U Zwei Fragen zu eienr Swing Aufgabe AWT, Swing, JavaFX & SWT 2
G 2D-Grafik Grafik in zwei verschiedenen Fenstern gleichzeitig zeichnen AWT, Swing, JavaFX & SWT 9
I JTable, DefaultTableModel, zwei Zahlen multiplizieren. AWT, Swing, JavaFX & SWT 26
P Zwei JTables auf eine A4-Seite mit einstellbaren Rändern AWT, Swing, JavaFX & SWT 9
missy72 JavaFX TableView / TableColumn / ObservableList / zwei Werte in einer Zelle AWT, Swing, JavaFX & SWT 2
Z Swing Kann man denn abstand zwischen zwei Buttons berechnen AWT, Swing, JavaFX & SWT 5
M Kommunikation zwischen zwei Stages AWT, Swing, JavaFX & SWT 0
Bluedaishi JavaFX Programm start mit zwei scenen bzw Fenster AWT, Swing, JavaFX & SWT 1
N Wie kann ich zwei Grafiken in einer Oberfläche anzeigen lassen? AWT, Swing, JavaFX & SWT 8
L Wörter zwischen zwei Grenzen einlesen. AWT, Swing, JavaFX & SWT 13
T Java: Zwei abhängige JSlider machen nicht das, was sie sollen AWT, Swing, JavaFX & SWT 4
D Zwei getrennte Java Klassen verbinden. Wie ? AWT, Swing, JavaFX & SWT 2
M Zwei JPanel übereinander nur vorderes "repainten" AWT, Swing, JavaFX & SWT 3
D zwei JLabel stapeln in einem JPanel AWT, Swing, JavaFX & SWT 5
H Kombination von zwei Frames AWT, Swing, JavaFX & SWT 16
M Schnittpunkte zwischen zwei Graphics2D Elemente ermitteln. AWT, Swing, JavaFX & SWT 5
DaCrazyJavaExpert Swing Zwei gleichgroße Panels in einem Scrollpane mit Layout AWT, Swing, JavaFX & SWT 9
A Swing Programm funktioniert aber zwei Buttons werden angezeigt AWT, Swing, JavaFX & SWT 3
D Swing Kommunikation zwischen zwei GUI's AWT, Swing, JavaFX & SWT 2
S Zwei JTree, ein Model, bei Selection im ersten JTree soll der zweite die Inhlate anzeigen AWT, Swing, JavaFX & SWT 2
H zwei gleich große Panels getrennt durch ein weiteres Panel AWT, Swing, JavaFX & SWT 10
T CSS Rechtsbüdniges Label mit Zwei Zeilen AWT, Swing, JavaFX & SWT 7
P 2D-Grafik Bogen(Arc) zwischen zwei Punkten zeichnen AWT, Swing, JavaFX & SWT 2
A Oberfläche mit zwei Klassen und actionlistener verbinden AWT, Swing, JavaFX & SWT 7
Paul15 Zwei Fenster AWT, Swing, JavaFX & SWT 23
V JavaFX Zwei Dinge in einer CellFactory erledigen AWT, Swing, JavaFX & SWT 8
B Vertikale Größenänderung zwischen zwei Widgets AWT, Swing, JavaFX & SWT 2
J zwei Paint methoden in einer Klasse AWT, Swing, JavaFX & SWT 3
C Zwei Ebenen in Graphics ? AWT, Swing, JavaFX & SWT 0
L Zwei String Array in eine Spalte einfügen AWT, Swing, JavaFX & SWT 1
I Zwei Fenster nebeneinander anzeigen AWT, Swing, JavaFX & SWT 2
A Swing Zwei Klassen mit Textfeld Eingaben vergleichen und Ausgabe erzeugen AWT, Swing, JavaFX & SWT 10
B Swing focusGained öffnet sich zwei mal AWT, Swing, JavaFX & SWT 3
C Bei Btn Klick zwei JPanels switchen AWT, Swing, JavaFX & SWT 14
A Jtabbed ein Reiter mit zwei icons AWT, Swing, JavaFX & SWT 4
K Zugriff auf Label und Ereignisbehandlung durch zwei Handlerklassen AWT, Swing, JavaFX & SWT 3
J Zwei GUIs - Nach button-Klick soll ein Wert an die andere GUI übergeben werden AWT, Swing, JavaFX & SWT 15
B Kommunikation zwischen zwei Fenstern und vorübergehende Speicherung der Eingaben AWT, Swing, JavaFX & SWT 4
M Swing Warum öffnen sich beim Zeichnen mit Swing plötzlich zwei Fenster? AWT, Swing, JavaFX & SWT 5
B JApplet zwei Panels autobreite? AWT, Swing, JavaFX & SWT 2
T LayoutManager GridBagLayout - zwei jTable mit unterschiedlicher Höhe AWT, Swing, JavaFX & SWT 2
L Zeichnen in zwei Fenstern AWT, Swing, JavaFX & SWT 8
J JOptionPane mit zwei Buttons?! AWT, Swing, JavaFX & SWT 3
F Swing Ladebildschirm zwischen zwei SWING Frames AWT, Swing, JavaFX & SWT 11
T JTabbedPane - neuen Tab zwischen zwei anderen Tabs hinzufügen AWT, Swing, JavaFX & SWT 2
Helgon Zwei jTables gleich Breit AWT, Swing, JavaFX & SWT 4
C Zwei Bilder übereinander legen AWT, Swing, JavaFX & SWT 1
A Daten umherschieben zwischen zwei Klassen AWT, Swing, JavaFX & SWT 40
M Swing Zwei Jlists - selectedElement binden? AWT, Swing, JavaFX & SWT 7
K zwei TableModel AWT, Swing, JavaFX & SWT 9
J Schließen über x soll zwei Prozesse beenden AWT, Swing, JavaFX & SWT 7
F JPanel mit zwei Methoden her beschreiben. AWT, Swing, JavaFX & SWT 8
Y xormode bzw bild in zwei ebenen zeichnen AWT, Swing, JavaFX & SWT 4
G ein JTextArea in zwei JPanels AWT, Swing, JavaFX & SWT 2
G Wie erzeugt man zwei identische JPanel AWT, Swing, JavaFX & SWT 4
C zwei Bilder nacheinander anzeigen AWT, Swing, JavaFX & SWT 2
B LayoutManager Positionierung zwischen zwei Layoutkomponenten AWT, Swing, JavaFX & SWT 2
N Swing DnD zwischen zwei JTrees AWT, Swing, JavaFX & SWT 2
H Swing Zwei Fragen AWT, Swing, JavaFX & SWT 5
D Zwei String Attribute über eine Methode als Zeilen in einer Tabelle darstellen AWT, Swing, JavaFX & SWT 9
C Zwei JSpinner mit dem gleichen Wert AWT, Swing, JavaFX & SWT 2
T Zwei Jtables eine JscrollPane AWT, Swing, JavaFX & SWT 3
L Zwei Anwendungen kommen sich in die Quere! AWT, Swing, JavaFX & SWT 4
M SWT DND zwischen zwei TreViewern in beide Richtungen AWT, Swing, JavaFX & SWT 10
S SWT Zwei Tabellen gleichzeitig Scrollen AWT, Swing, JavaFX & SWT 3
N zwei JComponente gleichzeitig auf JPanel hinzufügen AWT, Swing, JavaFX & SWT 22
N Ein Button für zwei Aktionen AWT, Swing, JavaFX & SWT 7
V Swing Auslösen von zwei Events hintereinander AWT, Swing, JavaFX & SWT 4
hdi SWT Zwei mal Shell öffnen = Exception AWT, Swing, JavaFX & SWT 6
algorismi Unterscheiden zwischen zwei JLists AWT, Swing, JavaFX & SWT 5
P GridBagLayout - zwei Spalten mit gleicher Größe AWT, Swing, JavaFX & SWT 11
H Ein Button - zwei Actions AWT, Swing, JavaFX & SWT 3
T Schieberegler mit zwei Schiebern AWT, Swing, JavaFX & SWT 2
M SWT SWT - Zwei Tabellen gleicher Größe AWT, Swing, JavaFX & SWT 5
S import von Klassen (zwei Panels eine Form) AWT, Swing, JavaFX & SWT 39
K Zwei Panels zentriert anordnen AWT, Swing, JavaFX & SWT 3
S Vereinen von zwei MenuBar AWT, Swing, JavaFX & SWT 3
P JList mit zwei Werten AWT, Swing, JavaFX & SWT 9
0 JMenuItem nicht in zwei JMenus möglich? AWT, Swing, JavaFX & SWT 2
G Variblenwert zwischen zwei Klassen übergeben AWT, Swing, JavaFX & SWT 3
B zwei JLabels überlappen lassen AWT, Swing, JavaFX & SWT 5
T Kommunikation zwischen Zwei GUI-Klassen AWT, Swing, JavaFX & SWT 2
O Zwei Listener auf Komponente, warten auf Beendigun? AWT, Swing, JavaFX & SWT 2
T Kommunikation zwischen zwei jFrames AWT, Swing, JavaFX & SWT 4
G Datenaustausch zwischen zwei JFrames AWT, Swing, JavaFX & SWT 3
K Zwei JFrames aneinanderdocken? AWT, Swing, JavaFX & SWT 5
A Eins von zwei offnen Fenster/Frames schließen AWT, Swing, JavaFX & SWT 2
S JTable zwei Text-Zeilen in einer Zelle AWT, Swing, JavaFX & SWT 2
hdi zeitgleiches fokusieren von zwei panels AWT, Swing, JavaFX & SWT 2
I JTable: "GLEICHZEITIG" zwei verschiedene TableMode AWT, Swing, JavaFX & SWT 2
R JDialog dispose() wird zwei mal aufgerufen AWT, Swing, JavaFX & SWT 2
T zwei panel und ein thread AWT, Swing, JavaFX & SWT 5
W Instanz eines Steuerelementes an zwei Stellen zeichnen AWT, Swing, JavaFX & SWT 3
M Zwei JMenuBars AWT, Swing, JavaFX & SWT 5
W JTree - aus zwei mach eins AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben