Probleme mit JComboBox

Naturp

Mitglied
Moing

folgendes Problem
Ich suche die ControllerListe nach Joysticks ab. wurde ein pasender Joystick gefunden, so wird er der ComboBox hinzugefügt.

In dieser Controller Lieste hat jeder Controller eine Index Nummer..
beim auslesen der ComboBox mit getSelectetItem kriege ich den Namen des Joystick als String zurück...mich würde aber die Indexnummer Interessieren.

Hat jemand ne Idee wie ich beim adden des Strings die Inedxnummer mitgeben kann, so dass ich später weiss, zu welchem String welche Indexnummer gehört?

Gruss
Naturp
 
Indem du zur ControllerListe ein Objekt einer Klasse übergibst, die beide Parameter speichert und deren toString()-Methode den Namen des Joysticks als String zurückgibt.

z.B.: (ungetestet)
Java:
class JoyStickID{
   private final String NAME;
   private final long ID;
   
   JoyStickID(String name, long ID){
      this.NAME = name;
      this.ID = ID;
   }
   
   @Override
   public String toString(){
      return NAME;
   }
   
   long getID(){
      return ID;
   }
}
 
@Mirar: Nein, außer er erstellt beim Hinzufügen ein Array/eine ArrayList, in der die Indizes mit denen in der Liste der JComboBox übereinstimmen.
 
Mmmm..danke an alle. Die erste AW von Mirar war genau das richtige ;)

"getSelectedIndex()" Das hab eich gestern wohl übersehen dass es das gibt...

Jetzt habe ich es so gemacht und das funktioniert =D

Java:
 static public void aktualisiereJoystickList()
  {
	  ControllerEnvironment ce = ControllerEnvironment.getDefaultEnvironment();
	  Controller[] cs = ce.getControllers();
	  Controller.Type type;
	  RRX_Konsole.gefundeneJoysticks.removeAllItems();
	  
	  int i = 0;
		while(i < cs.length) {
	      type = cs[i].getType();
	      if ((type == Controller.Type.GAMEPAD) ||(type == Controller.Type.STICK))
	      {
	    	 RRX_Konsole.gefundeneJoysticks.addItem(cs[i].getName());
	    	 gefundeneJoysticksArry[(RRX_Konsole.gefundeneJoysticks.getItemCount()-1)] = cs[i];
	      }
	      i++;
	    }
		switch (RRX_Konsole.gefundeneJoysticks.getItemCount())
		{
		case 0:
			RRX_Konsole.joystickStatus.setText("Kein Joystick gefunden"); 
			break;
		case 1:
			RRX_Konsole.joystickStatus.setText("Joystick gefunden");
			RRX_Konsole.auswaehlenJoystick.setEnabled(true);
			break;
		default:
			RRX_Konsole.joystickStatus.setText(RRX_Konsole.gefundeneJoysticks.getItemCount() + "Ports gefunden"); 
			RRX_Konsole.auswaehlenJoystick.setEnabled(true);
			break;
		}
	  return;
  }
  
  static public void auswaehlenJoystick()
  {
	  controller = gefundeneJoysticksArry[RRX_Konsole.gefundeneJoysticks.getSelectedIndex()];
	  
	  System.out.println("Game controller: " +
              controller.getName() + ", " + 
              controller.getType());

	  findCompIndices(controller);

	  findRumblers(controller);
	  RRX_Konsole.Joystick_ready = 1;
  }

Ob das jetzt wirklich proffesionel ist weiss ich nicht =D Tatsache und Hauptsache ist das es funktioniert! Thx nochmal. Wundere mich immer noch dass ich gestern diese Methode nicht gesehen habe :(

Aber falls jemand gerade noch ne viel "sauberere" Lösung einfällt bin ich natürlich ganz Ohr da ich ja etwas lernen möchte bei der ganzen Sache ;-)

Super Forum hier!
Gruss
Naturp
 
@Mirar: Nein, außer er erstellt beim Hinzufügen ein Array/eine ArrayList, in der die Indizes mit denen in der Liste der JComboBox übereinstimmen.

Eine JComboBox hat sobald sie einen Wert enthält automatisch einen Index für jeden Wert.
Die Frage von Naturp war lediglich wie er statt des Wertes den Index bekommt und genau dafür gibt es schließlich die Methode der JComboBox. Würde ich mir erst ein Array erstellen und alles genau so einspeichern wie die JComboBox es sowieso schon gespeichert hat, hätte man sich diese Methode auch sparen können da ich dann auch die Methode getIndex() des Array-Objekts hätte nutzen können.

Aber kein Ding ;)

Gruß Mirar

P.S.: Über ein Danke freut man sich
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück