【发布时间】:2020-07-16 18:51:18
【问题描述】:
我想在 JTextArea 中打印字符串并正确对齐它们。很难解释,所以我将上传我想要实现的屏幕截图。
所以每行打印的字符串都是从具有参数(id、title、author、date、rank)的 Paper 对象打印的。数据从文本文件中读取,并使用 loadPaper() 函数存储在 LinkedList 中。
然后使用displayPapers()函数将Paper对象的内容显示到JTextArea。 displayPapers() 如下:
/** Print all Paper object present in the LinkedList paperList to textArea */
public void displayPapers(){
// clear textArea before displaying new content
displayTxtArea.setText("");
Paper currentPaper;
ListIterator<Paper> iter = paperList.listIterator();
while(iter.hasNext()){
currentPaper = iter.next();
String line = currentPaper.toString();
if("".equals(line)){
continue;
} // end if
String[] words = line.split(",");
displayTxtArea.append (" "
+ padString(words[0],30)
+ padString(words[1],30)
+ " "
+ padString(words[2],30)
+ " "
+ padString(words[3],30)
+ padString(words[4],30)
+ "\n");
System.out.println(words);
//displayTxtArea.append(currentPaper.toString());
} // end while
displayTxtArea.append(" Total " + noOfPapers + " entries!");
} // end showAllPaper
padString() 函数将空格添加到字符串中,以便它们都具有相同数量的单词。下面列出了 PadString():
/** Add spaces to Strings so that all of the are of same number of characters
* @param str String to be padded
* @param n total number words String should be padded to
* @return str Padded string
*/
private String padString(String str, int n){
if(str.length() < n){
for(int j = str.length(); j < n; j++){
str += " ";
} // end for
} // end if
return str;
} // end padString
我已经为此工作了一段时间,但仍然无法找到解决方案。如您所见,并非所有内容都按预期完美对齐。
如何将它们完美对齐以使其看起来更好?谢谢。
【问题讨论】:
-
为什么不使用 JTable?在列中显示数据似乎更合适。
-
我宁愿选择一个 JTable,它可以让你灵活地处理列大小和位置等。