我的gui中有一个Jtable表和一个返回如下字符串的java方法:name1#surname1#job1 $ name2#surname2#job2等。根据我的数据库中有多少人,我不知道字符串的确切长度。我想拆分这个字符串并将其添加到JTable中,每个值都在正确的类别下!但我无法实现这一点。
这是我的JTable的代码:
table = new JTable();
table.setRowSelectionAllowed(false);
table.setModel(new DefaultTableModel(new Object[][] {
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null},
}, new String[] {
"Name", "Surname", "Job"}) {
Class[] columnTypes = new Class[] { String.class, String.class,
String.class};
public Class getColumnClass(int columnIndex) {
return columnTypes[columnIndex];
}
答案 0 :(得分:4)
不要为模型设置空值。没有意义。就这样做
String[] colNames = {"name", "surname","job"};
DefaultTableModel model = new DefaultTableModel(colNames, 0):
JTable table = new JTable(model);
然后通过$
将String拆分为数组String[] lines = longString.split("\\$");
只需遍历该数组并再次拆分,然后将第二次拆分中的数组添加到model
for (String line : lines) {
model.addRow(line.split("#");
}
这就是它的全部内容:)
运行此测试
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableModel;
public class TestTable5 {
public TestTable5() {
String blah = "pee#skillet#assassin$pee#skillet#stackoverflow";
String[] colNames = {"name", "surname", "job"};
DefaultTableModel model = new DefaultTableModel(colNames, 0);
JTable table = new JTable(model);
String[] lines = blah.split("\\$"); // escape the $
for (String line : lines) {
model.addRow(line.split("#"));
}
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new JScrollPane(table));
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new TestTable5();
}
});
}
}