-->

我怎样才能生成Java标签云,​​与OpenCloud? [关闭](How can I gene

2019-06-26 07:21发布

我一直在寻找一个库在Java应用程序中创建标签云,我发现OpenCloud 。

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

Answer 1:

其实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();
            }
        });
    }

}

该代码是基于所述的实施例1 OpenCloud库

这里是什么,我得到了一个输出:



Answer 2:

我创造了这个词云库的Kumo(云日语),在Java。 奇怪的是,我一直很喜欢这个词云。 :)

KUMO可以生成BufferedImages,图像文件(PNG,BMP,等),并且还具有实施例示出JPanels用法。 该项目Maven化和Maven的中央,使集成变得更加容易。 下面是几个例子字云,还有的Kumo的GitHub的页面上更多的例子: https://github.com/kennycason/kumo

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



Answer 3:

我用openCloud创建使用词频和简单的Java字云或对数似然值来调节重量的话(字体尺寸)。 云使用随机颜色,并提供一个简单的随机旋转。

Github上库在这里

英文样本

阿拉伯语样本



文章来源: How can I generate a tag cloud in Java, with OpenCloud? [closed]