这里我使用数据库连接并尝试从数据库中检索所有表名。稍后您可以看到我得到的那些表名(使用while循环)存储在String []表中,然后我将此字符串添加到我的
List<String []> sqltable = new ArrayList<>();
为了打印它们我正在使用for循环:
for (String [] tablename : sqltable)
所以我的问题是如何将这个用于循环(或者如果有人知道更好的方法可能不用于循环)将这个sqltable列表放入我的listScrollPane中?
JScrollPane listScrollPane = new JScrollPane();
我已经尝试过了(但这不起作用,因为我的while循环无法达到varibales):
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 :(得分: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);
}
}
我添加了一个基本的ListCellRenderer,它在一个JLabel中显示每个数组的第一个元素,而不是默认数组的toString。