如何以哈佛引用格式将值从 JTable 设置为文本区域



我正在开发一个书目生成器应用程序,我希望我的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这样的东西可能有助于避免重新发明轮子。

最新更新