ComboBox + Vektordaten

KaurR

Grünschnabel
Hallo,

Ich hab da ein kleines Problem: Ich hab die ComboBox mit den Inhalt einer Datenbank befüllt. Die Ausgabe erfolgt aber wie folgt:

[1, RTL] --> ich möchte aber die eckigen Klammern und die ID (in dem Fall "1") nicht angezeigt bekommen :S

Hab zwar schon ähnliche Threads dazu gelesen, aber kann das Problem trotzdem nicht lösen :(

Hier mal die ComboBox in der GUI Klasse:

Code:
//ComboBox zur Senderauswahl
		
		ArrayList<String> comboBoxListe = server.getSQLArrayData("select * from Sender");
		
		
		
		JComboBox cbSender = new JComboBox(server.getSQLVectorData("select * from sender order by SenderName;")[0]);
//		cbSender.setPreferredSize(new Dimension(100,10));
		cbSender.setBorder(BorderFactory.createTitledBorder("Sender"));
		jpSuchmaske.add(cbSender);

und hier die Vektor-Methode(falls notwendig):

Code:
 public Vector[] getDBVectorData(String mySQLstatement) { //Vector-Array zur Übergabe der zwei Vektoren (einer für Metadaten=Überschriften und einer für normale Daten)
    	 con = this.getConnection();
    	 System.out.println("Verbindungsaufbau läuft!");
    	 Vector data = new Vector(); //Vector ist vergleichbar mit ArrayList
    	 Vector columnName = new Vector();
    	 
    	 
    	 try {
	   		 Statement select = con.createStatement();
	   		 ResultSet result = select.executeQuery(mySQLstatement); 
	   		 ResultSetMetaData resultMetadata = result.getMetaData(); //Metadaten holen
	   		 System.out.println("Got results:");
	   		
	   		 for (int i=1;i<= resultMetadata.getColumnCount();i++) {
	   			 columnName.addElement(resultMetadata.getColumnName(i)); //fügt die Spaltennamen dem Vektor columnName hinzu
	   			 
	   		 }
	   		 
	   		 while (result.next()) { //springt zum nächsten Tupel
	   			 Vector row = new Vector(); //Hilfsvektor
	   			 for (int i=1; i <= resultMetadata.getColumnCount();i++) {
	   				 row.addElement(result.getObject(i)); //befüllt den Vektor row mit den Daten aus dem Tupel
	   			 }
	   			 data.addElement(row); //fügt den Hilfsvektor row dem Vektor data hinzu
	   		 }
	   		 result.close();
	   		 
	   		 closeConnection();
	   	 } catch (Exception e) {
	   		 System.out.println(e.getMessage());
	   	 }  
    	 Vector [] vec = {data,columnName}; //speichert die zwei Vektoren in das VektorArray
    	 System.out.println("Daten retournieren!");
    	 closeConnection();
    	 
    	 return vec; //übergibt den Vektor der aufrufenden Methode
    	 
     }


BITTE UM HILFE :confused:
 
Zuletzt bearbeitet:
Hi
Ist es möglich dass du die falsche Funktion gepostet hast da du getDBVectorData nirgends aufrufst.
Eine Lösung könnte sein dass du die toString() Methode überschreibst.
Standard toString()
Java:
public String toString(){
return "["+id+","+Name+"]";
}
In sowas überschreibst
Java:
public String toString(){
return Name;
}
Name wäre in diesem Fall die Variable mit RTL.
 
Jetzt mal so wie ich des machen würde:

Erstmal würde ich ein eigenes Objekt hierfür erstellen:
cbSender:
Java:
public class cbSender {

	private int id;
	private String title;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	@Override
	public String toString(){
		return title;
	}
}

In der "Datenbankklasse" würde ich eine neue Funktion für diesen Fall:
Java:
	public cbSender[] getCbSenders() { //Vector-Array zur Übergabe der zwei Vektoren (einer für Metadaten=Überschriften und einer für normale Daten)
	         con = this.getConnection();
	         System.out.println("Verbindungsaufbau läuft!");
	         try {
	             Statement select = con.createStatement();
	             ResultSet result = select.executeQuery("select * from sender order by SenderName;"); 
	             ResultSetMetaData resultMetadata = result.getMetaData(); //Metadaten holen
	             System.out.println("Got results:");
	            
	             cbSender[] cbsenders = new cbSender[resultMetadata.getColumnCount()];
	             int count = 0;
	             while (result.next()) { //springt zum nächsten Tupel
	            	 cbsenders[count] = new cbSender();
	            	 cbsenders[count].setId(result.getInt(1));
	            	 cbsenders[count].setTitle(result.getString(2));
	            	 
	             }
	             result.close();
	             closeConnection();
	         } catch (Exception e) {
	             System.out.println(e.getMessage());
	         }  
	        System.out.println("Daten retournieren!");//Geilster Print-Out ever :-D
	         closeConnection();
	         
	         return cbSender; //übergibt den Vektor der aufrufenden Methode
	         
	     }

Und den Aufruf würde ich dann wie folgt machen:
Java:
		ArrayList<String> comboBoxListe = server.getSQLArrayData("select * from Sender");              
        
        JComboBox<cbSender> cbSender = new JComboBox<cbSender>(server.getCbSenders());
        cbSender.setBorder(BorderFactory.createTitledBorder("Sender"));
        jpSuchmaske.add(cbSender);

hab erst beim schreiben gemerkt das der Post schon älter ist vielleicht hilfts ja trotzdem ;)

Grüße
Youza
 

Neue Beiträge

Zurück