gpt4 book ai didi

java - 在 JTextArea 的列中对齐字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:00:30 25 4
gpt4 key购买 nike

我想在 JTextArea 中打印字符串并正确对齐它们。这很难解释,所以我将上传我想要实现的目标的屏幕截图。

Screen shot of what I have got so far

所以每行中打印的字符串是从具有参数(id、标题、作者、日期、等级)的 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

我已经为此工作了一段时间,但仍然无法找到解决方案。正如您可以注意到上图,并非所有内容都按预期完美对齐。

如何完美对齐它们,使其看起来更漂亮?谢谢。

最佳答案

仅当您使用等宽字体时,输出才会在您的 JTextArea 中“正确”对齐。例如“Andale Mono 14”就可以了。

此外,为了让您的生活更轻松并避免填充 hell ,请使用 String.format有了它 syntax .

String format = "%1$5s %2$-40s %3$-20s";
String someLine;
while (whatEver...) {
...
someLine = String.format(format, aNum, aName, aDate);
jTextArea1.append(someLine + "\n");
}

关于java - 在 JTextArea 的列中对齐字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8533612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com