gpt4 book ai didi

java - 如何用图像替换文本中的单词?

转载 作者:行者123 更新时间:2023-12-01 07:52:43 24 4
gpt4 key购买 nike

现在,我将 DefaultListModel 与所需的字符串列表一起使用,并通过 JList 在 JScrollPane 中显示它。

我想要的是在这句话中找到一个特定的单词,并放置一个 imageIcon 来代替这个单词,我将在所说的 JScrollPane 中显示它。

例如,我想用猫图标替换单词“cat”,字符串将是:

"the little cat is good"
"there is no tomorrow"
"cat is what I need"

我想要的输出将是一个包含以下项目的 JScrollPane:

"the little *cat icon* is good"
"there is no tomorrow"
"*cat icon* is what I need"

我发现的是创建自定义 ListCellRenderer 来替换 DefaultListModel 的建议。在所有示例中,imageIcon 都作为图标添加到标签中,不幸的是,这只在文本开头添加了一个图标,这不是我想要的。

以下是 this site 中的示例之一的相关部分:

@Override
public Component getListCellRendererComponent(
JList list, Object value, int index,
boolean isSelected, boolean cellHasFocus) {

// Get the renderer component from parent class

JLabel label =
(JLabel) super.getListCellRendererComponent(list,
value, index, isSelected, cellHasFocus);

// Get icon to use for the list item value

Icon icon = icons.get(value);

// Set icon to display for value

label.setIcon(icon);
return label;
}

那么,如何在 JList 的文本内添加图标?

如有任何建议,我们将不胜感激。谢谢

最佳答案

您可以使用 JLabelhtml 功能,切换cat<img src='cat.png'/>

示例

public class JListTest extends JPanel{  
private static final long serialVersionUID = 1L;

public JListTest(){
this.setLayout(new BorderLayout());
JScrollPane scrollPane = new JScrollPane();
String[] data = {"the little cat is good", "there is no tomorrow" , "cat is what I need"};
switchToHtml(data);
replaceWithImage(data,"cat","cat.png");
JList<String> list = new JList<String>(data);
scrollPane.getViewport().add(list);
this.add(scrollPane,BorderLayout.CENTER);
}

private void replaceWithImage(String[] data, String replace, String image) {
for (int i = 0; i < data.length; i++) {
String text = data[i];
if (text.contains(replace)){
text = text.replaceAll(replace, "<img src=\"" + JListTest.class.getResource(image) + "\">");
data[i]=text;
}
}
}

private void switchToHtml(String[] data) {
for (int i = 0; i < data.length; i++) {
data[i]="<html><body>" + data[i] + "</body></html>";
}
}

public static void main(String[] args) {
JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new BorderLayout());
frame.getContentPane().add(new JListTest(),BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}
}

要进行测试,只需添加 cat.pngclass 位于同一包中.

结果(有一只漂亮的小猫)

Result

关于java - 如何用图像替换文本中的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34619027/

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