java - 如何使用 OpenCloud 在 Java 中生成标签云?

标签 java swing api tags word-cloud

<分区>

我一直在寻找一个库来在 Java 应用程序中创建标签云,我找到了 OpenCloud .

我不想使用 OpenCloud 需要的 Web 服务器来获取输出,不是吗?有没有办法让 OpenCloud 在 Java/Swing 面板中工作?我想要一个独立应用程序的东西。如果这不可能,我还能在哪里寻找这样的 API?

最佳答案

实际上 OpenCloud 不需要 Web 服务器。只需使用 Swing 呈现而不是 HTML/JSP。这是一个小片段,说明了使用 OpenCloud 库的非常基本的 Swing 标签云。它可以改进,但它给了你要点:

import java.util.Random;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

import org.mcavallo.opencloud.Cloud;
import org.mcavallo.opencloud.Tag;

public class TestOpenCloud {

    private static final String[] WORDS = { "art", "australia", "baby", "beach", "birthday", "blue", "bw", "california", "canada", "canon",
            "cat", "chicago", "china", "christmas", "city", "dog", "england", "europe", "family", "festival", "flower", "flowers", "food",
            "france", "friends", "fun", "germany", "holiday", "india", "italy", "japan", "london", "me", "mexico", "music", "nature",
            "new", "newyork", "night", "nikon", "nyc", "paris", "park", "party", "people", "portrait", "sanfrancisco", "sky", "snow",
            "spain", "summer", "sunset", "taiwan", "tokyo", "travel", "trip", "uk", "usa", "vacation", "water", "wedding" };

    protected void initUI() {
        JFrame frame = new JFrame(TestOpenCloud.class.getSimpleName());
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel panel = new JPanel();
        Cloud cloud = new Cloud();
        Random random = new Random();
        for (String s : WORDS) {
            for (int i = random.nextInt(50); i > 0; i--) {
                cloud.addTag(s);
            }
        }
        for (Tag tag : cloud.tags()) {
            final JLabel label = new JLabel(tag.getName());
            label.setOpaque(false);
            label.setFont(label.getFont().deriveFont((float) tag.getWeight() * 10));
            panel.add(label);
        }
        frame.add(panel);
        frame.setSize(800, 600);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new TestOpenCloud().initUI();
            }
        });
    }

}

此代码基于 OpenCloud library 的示例 1

这是我得到的输出:

Swing tag cloud demo image

关于java - 如何使用 OpenCloud 在 Java 中生成标签云?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11481482/

相关文章:

java - 如何修复 ViewPager 以防止应用程序出错和崩溃?

Java 8 : How does `QUICKSORT_THRESHOLD=286` comes from?

java双缓冲性能

php - 通过 iCloud 同步联系人和提醒的网站

javascript - Youtube 数据 API 视频嵌入限制

python - 从 python 更改 C 变量?

java - 想要在 jaxb2-maven-plugin 生成的类中使用 @XmlRootElement

java - Playscape 1.11 SDK 集成

java - 刷新所有框架中的用户列表

java - JLabel 之上的 JPanel