我正在开发一个书目生成器应用程序,我希望我的JTable
中的值以 Hardvard 引用格式显示在textarea
中。
这是我获取和打印值的代码:
for (int row = 0; row < CitationTable.getRowCount(); row++) {
JournalCitation js = new JournalCitation();
js.setAuthorFirstName((String) CitationTable.getValueAt(row, 1));
js.setAuthorLastName((String) CitationTable.getValueAt(row, 2));
js.setYearPublished((int) CitationTable.getValueAt(row, 3));
js.setTitle((String) CitationTable.getValueAt(row, 4));
js.setVolumeNo((int) CitationTable.getValueAt(row, 5));
js.setIssueNo((int) CitationTable.getValueAt(row, 6));
js.setPagesUsed((int) CitationTable.getValueAt(row, 7));
js.setDoi((String) CitationTable.getValueAt(row, 8));
js.setDatabaseLocation((String) CitationTable.getValueAt(row, 9));
js.setUrl((String) CitationTable.getValueAt(row, 10));
js.setAccessDate((String) CitationTable.getValueAt(row, 11));
System.out.println(js.getAuthorFirstName() + js.getAuthorLastName() + js.getYearPublished() + js.getTitle() + js.getVolumeNo() + js.getIssueNo() + js.getPagesUsed() + js.getDoi() + js.getDatabaseLocation() + js.getUrl() + js.getAccessDate());
}
您可以使用 String#format(...) 方法以所需的格式生成要在文本区域中显示的文本。例如:
String text = String.format("%1s, %2s (%3s) %4s"
, js.getAuthorLastName().toUpperCase()
, js.getAuthorFirstName().toUpperCase()
, js.getYearPublished()
, js.getTitle()
);
textArea.setText(text);
此格式将生成如下所示的内容:
SOMMERVILLE, IAN (2011) Software engineering
注意:我不知道哈佛参考系统,但我希望你明白这个想法。
注 2:JTextArea
不支持粗体或斜体等文本格式。如果需要,您可能希望使用 JEditorPane 或 JTextPane 来满足此要求。
题外话
您可以考虑使用允许您保存此类对象的自定义表模型,而不是手动将表的单元格映射回 JournalCitation
对象。 像DataObjectTableModel或Rob Camick的RowTableModel/ListTableModel/BeanTableModel这样的东西可能有助于避免重新发明轮子。