我的 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];
}
最佳答案
不要为模型设置空值。没有意义。就这样做吧
String[] colNames = {"name", "surname","job"}; DefaultTableModel model = new DefaultTableModel(colNames, 0): JTable table = new JTable(model);
然后通过$将String分割成数组
String[] lines = longString.split("\\$");
只需遍历该数组并再次拆分,然后将第二次拆分的数组添加到
模型
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();
}
});
}
}
关于java - 双重拆分一个字符串并将其添加到 JTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21585604/