jTextArea,文字和图片

时间:2015-04-21 13:38:27

标签: java swing text

我有一个文字,我希望将文字的特定单词连接到图片。

就像“我有一个苹果”一样,苹果这个词可以点击,并且会在其中一个文本旁边的jTextArea中加载一个苹果的图片。

我在使用Netbeans的Swing GUI中使用jTextArea。

我想到的方法:

  1. 使用单词的超链接。
  2. 将单词设为某种按钮
  3. 在单词上使用鼠标事件。
  4. 让两个区域同时滚动。
  5. 我知道,选择2和3看起来就像是将文本放在代码中而不是从文件中加载。

    如果它们在同一行,

    4将不允许我使用多张图片。

2 个答案:

答案 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){}
            }
        });
    }
}