Как я могу создать облако тегов в Java с помощью OpenCloud?

Я искал библиотеку для создания облаков тегов в приложении Java, и я нашел OpenCloud.

Я не хочу использовать веб-сервер, который OpenCloud потребует для ввода вывода, не так ли? Есть ли способ заставить OpenCloud работать на панели Java/Swing? Я хочу что-то для самостоятельного приложения. Если это невозможно, где еще можно искать такой API?

Ответ 1

Фактически OpenCloud не требует веб-сервера. Просто используйте Swing рендеринг вместо HTML/JSP. Вот небольшой фрагмент, иллюстрирующий очень основное облако тегов Swing с использованием библиотеки OpenCloud. Его можно улучшить, но он дает вам суть:

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 library

Вот результат того, что я получил:

Swing tag cloud demo image

Ответ 2

Я создал библиотеку слов cloud, Kumo (облако на японском языке), на Java. Как ни странно, мне всегда нравились облака слов.:)

Kumo может создавать BufferedImages, файлы изображений (PNG, BMP и т.д.), а также примеры, показывающие использование в JPanels. Проект заучивается и в Maven Central упрощает интеграцию. Ниже приведены несколько примеров облаков слов, и на странице Kumo GitHub есть больше примеров: https://github.com/kennycason/kumo

Существует также пример JPanel здесь и снимок экрана здесь.

enter image description hereenter image description hereenter image description hereenter image description hereenter image description hereenter image description hereenter image description here

Ответ 3

Я использовал openCloud для создания простых облаков слова Java, используя значения частоты слов и/или логарифмических правдоподобия, чтобы настроить вес слов (размер шрифта). Облака используют случайные цвета и обеспечивают простое случайное вращение.

Репозиторий Github здесь

Английский образец

Арабский образец