2016-04-06 14 views
0

Burada veritabanı bağlantısını ve tüm tablo adlarını veritabanından almaya çalışıyorum. Eğer String [] tablolarda saklanır i (kullanarak döngü sırasında) olsun bu tablo adlarını görebilir ve sonra ben amacıyla benimJava: JScrollPane(); dizisine nasıl yerleştirebilirim?

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

bu dizeyi ekleyin Daha sonra i döngü kullanıyorum bunları yazdırmak için:

for (String [] tablename : sqltable) 

benim soru (birisi daha iyi bir yöntem biliyorsa döngü ya da belki değil) benim listScrollPane içine bu SQLTable listeyi koymak döngü bu nasıl kullanabileceğini olurdu?

JScrollPane listScrollPane = new JScrollPane(); 

zaten denedim (ama varibales benim while döngüsü meydana ulaşamaz çünkü bu çalışmıyor):

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

Ayrıca o döngü için yöntem ve mağaza oluştururken, ama elde bunu yaparak çalıştı sadece null. Benim program parçası, mikroişlemciyi

:

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, size kaydırılabilen bir Pane sunar. Örneğin bir tablo veya ListBox vb. Için bir içerik eklemek gerekir. BTW Neden bir ArrayList içinde String dizileri kullanıyorsunuz? – jr593

+0

Tamam ArrayList <> a = new ArrayList <> 'i kullanabilirim, ancak bu her iki durumda da sorun değil, JScrollPane için evet bazı verileri koymam gerektiğini biliyorum, ama bunun için sormuyorum Bunu yapmak için uygun bir yol soruyorum. –

cevap

0

Sanırım kodunuzu gerçekten emin anlamıyorum ki ... Bunu ne istiyorsun ... diziler listesi var?

Her neyse, bu kısa örneğe bir göz atmanızı öneririm, bir JScrollPane'de bir JList'i sarar.

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); 
    } 

} 

Ben bir JLabel yerine varsayılan dizinin toString her dizinin ilk elemanını gösteren temel bir ListCellRenderer ekledi.

+0

Anlayışınızı görüyorum, örneğiniz açık ve her şey yolunda. Ama başka bir deyişle, tüm bunları ana sınıfta yapıyorsun, bu yüzden listeyi almak kolay, ama benim örneğimde, her değişkenin içinde ve döngülerdeyken ben senin örneğindeki gibi onlara ulaşamıyorum –

+0

Evet, istedim çok kısa ve temel bir örnek vermek :-). Bunu kullanabileceğinizi düşündüm çünkü "Zaten denedim: JScrollPane listScrollPane = yeni JScrollPane (Arrays.asList (sqltable));" JScrollPane listScrollPane = yeni JScrollPane (yeni JList (sqlTable.toArray())); aynı yol. – Dario

+0

Bir şekilde size teşekkür etmeliyim, liste çalışması yaptım :). Ama başka bir sorun geliyor, çünkü dizeleri değil dizi dizisi yazdırıyor çünkü: Ljava.lang.String; @ 264d8046, belki bir şekilde dizeye dönüştürmenin yolunu biliyorsunuz :) –

İlgili konular