我有一个文字,我希望将文字的特定单词连接到图片。
就像“我有一个苹果”一样,苹果这个词可以点击,并且会在其中一个文本旁边的jTextArea中加载一个苹果的图片。
我在使用Netbeans的Swing GUI中使用jTextArea。
我想到的方法:
我知道,选择2和3看起来就像是将文本放在代码中而不是从文件中加载。
如果它们在同一行,4将不允许我使用多张图片。
答案 0 :(得分:2)
最好的方法是创建一个看起来就像你想要的简单的html网页,然后使用JEditorPane或JTextPane与HTMLEditorKit将内容加载到你的GUI中。
http://docs.oracle.com/javase/tutorial/uiswing/components/editorpane.html
答案 1 :(得分:2)
另一个更接近该功能的JComponent: JTextPane。
试试这个:
import javax.swing.*;
import javax.swing.text.*;
import java.awt.event.*;
import java.awt.*;
import java.util.*;
class TextPaneDemo extends JFrame
{
public void createAndShowGUI()throws Exception
{
JTextPane tp = new JTextPane();
ArrayList<String> data = new ArrayList();
data.add("Data here");
data.add("Data here 2");
data.add("Data here 3");
data.add("Data here 4");
getContentPane().add(tp);
setSize(300,400);
StyledDocument doc = tp.getStyledDocument();
SimpleAttributeSet attr = new SimpleAttributeSet();
for (String dat : data )
{
doc.insertString(doc.getLength(), dat, attr );
tp.setCaretPosition(tp.getDocument().getLength());
tp.insertComponent(new JButton("Click"));
doc.insertString(doc.getLength(), "\n", attr );
}
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
TextPaneDemo tpd = new TextPaneDemo();
try
{
tpd.createAndShowGUI();
}
catch (Exception ex){}
}
});
}
}