2016-04-17 6 views
0

Im folgenden Code versuche ich auf eine bestimmte Zeile der Datenbank zugreifen und es ist alles Element in einem Kombinationsfeld, aber das Kombinationsfeld zeigt [Ljava.lang.String,... ist anstelle von Zeichenfolge Wert. Bitte helfen Sie, String-Werte in der Combo-Box anzuzeigen.Wie Ljava.lang.String aus einem Kombinationsfeld in Java entfernen?

void defaulters() 
{ 
    try 
    { 
     Connection con = DriverManager.getConnection(url, user, password); 
     final Statement stmt = con.createStatement(); 
     ArrayList <String[]> result = new ArrayList<String[]>();   
     ResultSet rs = stmt.executeQuery("SELECT c_name FROM customers"); 
     int columnCount = rs.getMetaData().getColumnCount(); 
     while(rs.next()) 
     { 
      String[] row = new String[columnCount]; 
      for (int i=0; i <columnCount ; i++) 
      { 
        row[i] = rs.getString(i + 1); 
      } 

      result.add(row); 
     } 

     final JComboBox cb=new JComboBox(); 
     JFrame f=new JFrame(); 
     JLabel amt= new JLabel("Pending Amount: ", JLabel.RIGHT); 
     JLabel cid= new JLabel("Customer ID: ", JLabel.RIGHT); 
     final JTextField pamt = new JTextField(10); 
     cb.setModel(new DefaultComboBoxModel(result.toArray())); 
     JButton sumbit = new JButton("Sumbit"); 
     f.add(cid);f.add(cb);f.add(amt);f.add(pamt);f.add(sumbit); 
     f.setSize(400, 400); 
     f.setLayout(new FlowLayout()); 
     f.setTitle("Defaulters"); 
     f.setVisible(true); 
     String row = (String)cb.getSelectedItem(); 

     sumbit.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) 
      { 
       try { 
        stmt.executeUpdate 
        ("insert into buyers values('"+cb.getSelectedItem()+"','"+pamt.getText()+"');"); 
       } catch (SQLException e1) { 
        e1.printStackTrace(); 
       }    
       System.out.println("Success"); 
       }; 
      }); 


} 

Antwort

3

hier: cb.setModel(new DefaultComboBoxModel(result.toArray())); Sie result.toArray() aufrufen, die wiederum eine String[][] Array. Sie sehen das in Ihrer Combobox, weil Java die String-Repräsentation String[] nicht den tatsächlichen Inhalt hinzufügt.

2

Sie speichern Arrays von Strings (d. H. String[] Instanzen) im Kombinationsfeldmodell. Die toString() Methode von Arrays erzeugt, was Sie sehen.

Wenn Sie wirklich wollen, dass Ihre Combo-Box Arrays von Strings enthält (was ich nicht empfehlen würde: Sie sollten besser Instanz einer gut definierten Klasse verwenden), müssen Sie set a renderer auf der Combo-Box, um die Box zu sagen Ein String-Array sollte gerendert werden.

Wenn Sie keine String-Arrays in Ihrem Kombinationsfeld haben möchten (und Sie scheinen Strings und keine String-Arrays zu haben), müssen Sie stattdessen Ihre Zeilenliste in ein Array von String umwandeln eines Arrays von String [].

Nicht verwandt: Sie sollten auch lernen, prepared statements zu verwenden.

Verwandte Themen