2016-04-06 2 views
0

ここで私はdatabse接続を使用しており、データベースからすべてのテーブル名を取得しようとしています。あなたが見ることができるように後、私は(whileループを使用)を取得、それらのテーブル名は、String []型のテーブルに格納され、その後、私はそれらを印刷するためには、私のJava:配列をJScrollPane()に配置するにはどうすればいいですか?

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

にこの文字列を追加し、私は、forループを使用しています:

for (String [] tablename : sqltable) 

だから私の質問は、(誰かがより良い方法を知っていれば、forループまたはそうでないかもしれない)私は私のlistScrollPaneに、このリストのSQLTableを置くためにループのためにこれを使用することができますどのようにでしょうか?

JScrollPane listScrollPane = new JScrollPane(); 

(私はvaribalesは私のwhileループを形成達することができないので、これは動作していない)私はすでに試した:

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

はまた、それにループするための方法およびストアを作成しようとしたが、これを行うことによって、私は達成nullのみ。

マイコードsnipetは:

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はスクロール可能なペインを提供します。リストを入れるには、その中にいくつかのコンテンツを追加する必要があります。 たとえば、テーブルやリストボックスなど。 なぜあなたはArrayListの中で文字列配列を使用していますか? – jr593

+0

私はArrayList <> a = new ArrayList <>を使用することができますが、これは問題ではありません。どちらの場合でもこれは動作していますし、JScrollPaneのためにいくつかデータを入れる必要があることを知っていますが、私はそれを行うための適切な方法を求めています。 –

答えて

0

まあ、私は私はあなたのコードを理解し、本当にわからないんだけど...あなたは、アレイのリストを持っている...それは何をしたいのですか?

この短い例を見て、JListを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); 
    } 

} 

私の代わりにデフォルトの配列のtoStringのJLabelの各配列の最初の要素を表示する基本的なListCellRendererを追加しました。

+0

私は、あなたの例がはっきりしていることを確認し、すべてがOKです。しかし、他の方法では、メインクラスでこれをすべてやっているので、リストを取得するのはちょっと簡単ですが、私の例では、すべての変数がifループとwhileループに入っていますので、あなたの例のようにそれらに達することはできません –

+0

はい、非常に簡単で基本的な例を提供しています:-)。 JScrollPane listScrollPane = new JScrollPane(Arrays.asList(sqltable)); "というメッセージが表示されたので、だから私はあなたがJScrollPaneを試すことができると思ったlistScrollPane = new JScrollPane(新しいJList(sqlTable.toArray()));同じ方法。 – Dario

+0

私はあなたに感謝すべき1つの方法で、あなたは素晴らしい作品を作った:)。しかし、文字列ではなく配列オブジェクト名:Ljava.lang.String; @ 264d8046を印刷するので、別の問題が発生します。 –

関連する問題