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

cod*_*der 10 java tags api swing word-cloud

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

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

Gui*_*let 13

实际上,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();
            }
        });
    }

}
Run Code Online (Sandbox Code Playgroud)

此代码基于OpenCloud库的示例1

这是我得到的输出:

Swing标签云演示图像


Ken*_*son 11

我用Java创建了云库,Kumo(日语中的云).奇怪的是,我一直很喜欢文字云.:)

Kumo可以生成BufferedImages,图像文件(PNG,BMP等),还有示例显示JPanels中的用法.该项目在mavenized和Maven Central中进行了整合,使集成变得更加容易.下面是一些示例单词云,Kumo的GitHub页面上有更多示例:https://github.com/kennycason/kumo

还有一个JPanel例子在这里和截图在这里.

在此输入图像描述 在此输入图像描述 在此输入图像描述 在此输入图像描述 在此输入图像描述 在此输入图像描述 在此输入图像描述

  • 只是想在这里插话说,在评估了 opencloud 和 kumo 作为我的选择之后,Kumo 是这里的明显赢家。我什至不确定 OpenCloud 是否已经得到积极维护。OC 的旧 SourceForge 页面向我的浏览器发送了垃圾邮件。:/ (2认同)