2016-04-06 22 views
0

Hier verwende ich Datenbankverbindung und versuche, alle Tabellennamen aus der Datenbank abzurufen. Später, als Sie diese Tabellennamen sehen kann ich (mit while-Schleife) gespeichert bekommen in String [] Tabellen, und fügen Sie dann ich diese Zeichenfolge zu meinemJava: Wie setze ich Array in JScrollPane();?

List<String []> sqltable = new ArrayList<>(); 

Um sie zu drucken i for-Schleife bin mit:

for (String [] tablename : sqltable) 

Also meine Frage wäre, wie kann ich diese for-Schleife (oder vielleicht nicht für die Schleife, wenn jemand bessere Methode weiß), um diese sqltable-Liste in meine listScrollPane?

JScrollPane listScrollPane = new JScrollPane(); 

Ich habe bereits versucht (aber das funktioniert nicht, weil ich nicht varibales bilden Schleife meine während erreichen können):

JScrollPane listScrollPane = new JScrollPane(Arrays.asList(sqltable)); 

versuchte auch Verfahren zum Erzeugen und Speichern von für Schleife drin, aber durch dieses i erreicht tun nur null.

Mein Codestück:

if (conn != null) { 
    DatabaseMetaData metadata = conn.getMetaData(); 
    List<String []> sqltable = new ArrayList<>(); 
    try {        
     String[] types = {"TABLE"}; 
     String[] tables;        
     ResultSet resultSet = metadata.getTables(null, null, "%", types); 
     while (resultSet.next()) { 
      tableName = resultSet.getString(3); 
      tables = new String[]{tableName}; 
      sqltable.add(tables);         
     } 
    } catch (SQLException ex) { 
     Logger.getLogger(JFDatabase.class.getName()).log(Level.SEVERE, null, ex); 
    } 
    for (String [] tablename : sqltable){ 
     System.out.println(Arrays.toString(tablename)); 
     System.out.println(Arrays.asList(tablename));       
    } 
}  
+0

JScrollPane gibt Ihnen nur einen Bereich, der gescrollt werden kann. Sie müssen einige Inhalte hinzufügen, um Ihre Liste einzufügen. Zum Beispiel eine Tabelle oder ListBox etc .... BTW Warum verwenden Sie String-Arrays innerhalb einer ArrayList? – jr593

+0

Ok ich kann ArrayList <> a = new ArrayList <> verwenden, aber das ist nicht das Problem, in beiden Fällen funktioniert das, und für JScrollPane weiß ich, dass ich einige Daten eingeben muss, aber ich frage nicht danach Ich frage nach dem richtigen Weg, das zu tun. –

Antwort

0

Nun, ich bin nicht wirklich sicher, ob ich den Code verstehen ... Sie haben eine Liste von Arrays ... ist es, was Sie wollen?

Wie auch immer, ich schlage vor, Sie schauen sich dieses kurze Beispiel an, ist Wraps eine JList in einem JScrollPane.

import java.util.ArrayList; 
import java.util.List; 

import javax.swing.JFrame; 
import javax.swing.JList; 
import javax.swing.JScrollPane; 

public class TestJScrollPaneWithList { 

    public static void main(String[] args) { 
     List<String[]> sqlTable = new ArrayList<String[]>(); 

     sqlTable.add(new String[] { "test1" }); 
     sqlTable.add(new String[] { "test2" }); 
     sqlTable.add(new String[] { "test3" }); 

     JFrame fr = new JFrame("Test)"); 

     JList list = new JList(sqlTable.toArray()); 
     list.setCellRenderer(new ListCellRenderer() { 

      @Override 
      public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { 
       String[] val = (String[]) value; 
       return new JLabel(val[0]); 
      } 
     }); 
     JScrollPane listScrollPane = new JScrollPane(list); 

     fr.add(listScrollPane); 

     fr.setSize(100, 100); 
     fr.setVisible(true); 
    } 

} 

I gegeben, um eine Grund ListCellRenderer dass das erste Element jedes Arrays zeigt in einer einem JLabel anstelle des toString-Standard Array.

+0

Ich sehe deinen Punkt, dein Beispiel ist klar und alles ist in Ordnung. Aber auf andere Weise machst du das alles in deiner Hauptklasse, also ist es leicht eine Liste zu bekommen, aber in meinem Beispiel ist jede Variable in if und while Schleifen, so dass ich sie nicht erreichen kann wie in deinem Beispiel –

+0

Ja, ich wollte um ein sehr kurzes und einfaches Beispiel zu geben :-). Ich dachte, du könntest es benutzen, weil ich lese "Ich habe es bereits versucht: JScrollPane listScrollPane = new JScrollPane (Arrays.asList (sqltable));" Ich dachte, Sie könnten JScrollPane versuchen listScrollPane = new JScrollPane (neue JList (sqlTable.toArray())); in der gleichen Weise. – Dario

+0

In einer Hinsicht sollte ich Ihnen danken, Sie haben die Liste funktioniert super :). Aber da kommt ein anderes Problem, weil es mir keine Zeichenketten, sondern Array-Objektnamen gibt: Ljava.lang.String; @ 264d8046, vielleicht kennst du die Art, wie es irgendwie in Zeichenkette umgewandelt wird :) –