[英]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.