2012-07-14 12 views
10

Szukałem biblioteki do tworzenia chmur znaczników w aplikacji Java i znalazłem OpenCloud.Jak mogę wygenerować chmurę znaczników w Javie, z OpenCloud?

Nie chcę używać serwera WWW, który będzie wymagał OpenCloud, aby uzyskać dane wyjściowe, prawda? Czy istnieje sposób na uruchomienie OpenCloud w panelu Java/Swing? Chcę czegoś na samodzielną aplikację. Jeśli nie jest to możliwe, gdzie jeszcze mogę szukać takiego API?

Odpowiedz

13

Właściwie OpenCloud nie wymaga serwera WWW. Po prostu użyj renderowania Swing zamiast HTML/JSP. Oto mały fragment ilustrujący bardzo podstawową chmurę znaczników Swing przy użyciu biblioteki OpenCloud. To może być lepsze, ale to daje sens:

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

} 

Kod ten jest oparty na przykładzie 1 OpenCloud library

Tutaj jest wyjście z tego, co mam:

Swing tag cloud demo image

+0

Wonderful.Thank ty – coder

+0

Może to wsparcie Api funkcja aktywowania i łączenie? – coder

+0

@ user1525144 Oczywiście wystarczy dodać MouseListener na każdym JLabel po kliknięciu myszką, możesz użyć 'Desktop.getDesktop(). Browse()', po mouseEntered/mouseExited możesz wykonać aktywowanie zawisu. Możesz także ustawić kursor na 'Cursor.getPredefinedCursor()' na każdym JLabel. –

10

Stworzyłem bibliotekę chmur słów Kumo (Cloud in Japanese) w języku Java. Dziwnie, zawsze lubiłem chmury słów. :)

Kumo może generować BufferedImages, pliki obrazów (PNG, BMP, itp.), A także ma przykłady pokazujące użycie w JPanels. Projekt został zmaterializowany, aw Maven Central ułatwił integrację. Poniżej znajduje się kilka przykładowych chmurek słów i jest więcej przykładów na stronie GitHub firmy Kumo: https://github.com/kennycason/kumo

Istnieje również przykład JPanel here i zrzut ekranu here.

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

+1

Chciałem po prostu zadzwonić tutaj i powiedzieć, że po ocenie opencloud i kumo jako opcji, Kumo był tutaj wyraźnym zwycięzcą. Nie jestem nawet pewien, czy OpenCloud jest już aktywnie utrzymywany. Stara strona SourceForge dla OC spamowała moją przeglądarkę. : / – drkstr1

0

Użyłem OpenCloud do tworzenia prostych chmury java słowo z wykorzystaniem częstotliwości słowo i lub zalogować wartości wiarogodności dostosować słowa wagi (rozmiar czcionki). Chmury używają losowych kolorów i zapewniają prostą rotację losową.

Github repozytorium here

English sample

Arabic sample

Powiązane problemy