Javaアプリケーションでタグクラウドを作成するためのライブラリを探していましたが、OpenCloudを見つけました。
OpenCloudが出力を取得するために必要なWebサーバーを使用する必要はありませんね。OpenCloudをJava/Swingパネルで動作させる方法はありますか?スタンドアロンアプリケーション用のものが欲しいです。これが不可能な場合、他にどこでそのようなAPIを探すことができますか?
実際、OpenCloudはWebサーバーを必要としません。HTML/JSPの代わりにSwingレンダリングを使用するだけです。これは、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ライブラリの例1に基づいています
これが私が得たものの出力です:
ワードクラウドライブラリ「雲」をJavaで作成しました。奇妙なことに、私はいつもワードクラウドが好きでした。:)
KumoはBufferedImages、画像ファイル(PNG、BMPなど)を生成でき、JPanelsでの使用法を示す例もあります。プロジェクトはMaven化されており、統合を容易にするためにMavenCentralにあります。以下にいくつかのワードクラウドの例を示します。KumoのGitHubページにはさらに多くの例があります:https ://github.com/kennycason/kumo
ここにJPanelの例とここにスクリーンショットもあります。
私はopenCloudを使用して、単語の頻度や対数尤度値を使用して単語の重み(フォントサイズ)を調整する単純なJava単語クラウドを作成しました。雲はランダムな色を使用し、単純なランダムな回転を提供します。
ここにGithubリポジトリ