gpt4 book ai didi

java - Java 中的 DefaultListModel 修改作为参数传递给 addElement 方法的 String

转载 作者:行者123 更新时间:2023-11-30 03:35:12 24 4
gpt4 key购买 nike

我在尝试使用 DefaultListModel 将从数据库加载的 POJO 输出到 JList 时遇到一个有趣的问题。简而言之,这是我的代码:

        // load POJO objects from the DB
PersonData[] allUsers = loadAllUserData();

DefaultListModel listModel = new DefaultListModel();

// fill in (with) the data
for (int i = 0; i < allUsers.length; i++) {
listModel.addElement(formPersonDataStringRepresentation(allUsers[i]));
}

JList list = new JList(listModel);
usersList = new JScrollPane(list);

采用 PersonData 对象并生成字符串的方法如下所示:

private String formPersonDataStringRepresentation(PersonData personData) {

// ... checking the argument ...

// ... formatting ...
return String.format("%-17s%-17s", personData.getUsername(),
personData.getForename()
);
}

发生的情况是,尽管使用了相同的格式“%-17s%-17s”,但打印到控制台时与在 DefaultListModel 中用作参数时,我的输出看起来有所不同。

为了更好地理解,我附上了控制台和 Swing 输出的屏幕截图。

Comparison of the output printed from console and the one generated by JList using the same String data

在这种情况下我是否必须避免使用 DefaultListModel?

最佳答案

这不是空格,而是字体——控制台是等宽的,而 Swing 默认使用其他字体(Arial?)。

正如问题评论中所发现的,您可以简单地将默认 Swing 字体更改为等宽字体:

list.setFont(new Font("Monospaced", Font.PLAIN, 12));

使其与控制台格式更加匹配。

关于java - Java 中的 DefaultListModel 修改作为参数传递给 addElement 方法的 String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28149205/

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