package com.kennycason.kumo; import com.kennycason.kumo.bg.PixelBoundryBackground; import com.kennycason.kumo.font.scale.LinearFontScalar; import com.kennycason.kumo.nlp.FrequencyAnalyzer; import com.kennycason.kumo.palette.ColorPalette; import javax.swing.*; import java.awt.*; import java.io.IOException; import java.io.InputStream; import java.util.List; /** * Created by kenny on 2/21/16. * * */ public class JPanelDemo extends JPanel { private final WordCloud wordCloud; public static void main(String[] args) throws IOException { final JFrame frame = new JFrame("JPanel WordCloud"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(new JPanelDemo()); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } public JPanelDemo() throws IOException { wordCloud = buildWordCloud(); final JLabel wordCloudLabel = new JLabel(new ImageIcon(wordCloud.getBufferedImage())); add(wordCloudLabel); repaint(); } private static WordCloud buildWordCloud() throws IOException { final FrequencyAnalyzer frequencyAnalyzer = new FrequencyAnalyzer(); frequencyAnalyzer.setWordFrequenciesToReturn(300); frequencyAnalyzer.setMinWordLength(5); final List<WordFrequency> wordFrequencies = frequencyAnalyzer.load(getInputStream("text/datarank.txt")); final Dimension dimension = new Dimension(500, 312); final WordCloud wordCloud = new WordCloud(dimension, CollisionMode.PIXEL_PERFECT); wordCloud.setPadding(1); wordCloud.setBackground(new PixelBoundryBackground(getInputStream("backgrounds/whale_small.png"))); wordCloud.setColorPalette(new ColorPalette(new Color(0x4055F1), new Color(0x408DF1), new Color(0x40AAF1), new Color(0x40C5F1), new Color(0x40D3F1), new Color(0xFFFFFF))); wordCloud.setFontScalar(new LinearFontScalar(10, 40)); wordCloud.build(wordFrequencies); return wordCloud; } private static InputStream getInputStream(final String path) { return Thread.currentThread().getContextClassLoader().getResourceAsStream(path); } }