繁体   English   中英

Java:如何将数组放入JScrollPane();?

[英]Java: How do I put array into JScrollPane();?

在这里,我正在使用数据库连接并尝试从数据库中检索所有表名。 稍后您可以看到我得到的那些表名(使用while循环)存储在String []表中,然后将该字符串添加到我的表中

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

为了打印它们,我使用for循环:

for (String [] tablename : sqltable)

所以我的问题是我如何使用此for循环(如果有人知道更好的方法,也许不使用for循环)将此sqltable列表放入我的listScrollPane中?

JScrollPane listScrollPane = new JScrollPane();  

我已经尝试过了(但是这不起作用,因为我无法通过while循环达到自变量):

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

还尝试创建方法并在其中存储for循环,但是通过这样做,我仅实现了null。

我的代码片段:

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

好吧,我不太确定我是否理解您的代码...您有一个数组列表...您想要的是什么?

无论如何,我建议您看一下这个简短的示例,将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);
    }

}

我添加了一个基本的ListCellRenderer,它在JLabel中显示每个数组的第一个元素,而不是默认数组的toString。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM