2012-07-14 41 views
10

Tôi đang tìm thư viện để tạo các đám mây thẻ trong một ứng dụng Java và tôi đã tìm thấy OpenCloud.Làm cách nào để tạo một đám mây thẻ trong Java bằng OpenCloud?

Tôi không muốn phải sử dụng một máy chủ web, mà OpenCloud sẽ yêu cầu để có được đầu ra, phải không? Có cách nào để có được OpenCloud để làm việc trong một bảng điều khiển Java/Swing? Tôi muốn một cái gì đó cho một ứng dụng độc lập. Nếu điều này là không thể, nơi khác tôi có thể tìm một API như vậy?

Trả lời

13

Thực tế OpenCloud không yêu cầu máy chủ Web. Đơn giản chỉ cần sử dụng Swing rendering thay vì HTML/JSP. Đây là một đoạn mã nhỏ minh họa một đám mây thẻ Swing rất cơ bản sử dụng thư viện OpenCloud. Nó có thể được cải thiện, nhưng nó mang lại cho bạn những ý chính:

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

} 

Mã này được dựa trên Ví dụ 1 của OpenCloud library

Dưới đây là kết quả của những gì tôi nhận:

Swing tag cloud demo image

+0

Wonderful.Thank bạn – coder

+0

hỗ trợ Api này chức năng di chuột và có thể liên kết? – coder

+0

@ user1525144 Chắc chắn, tất cả những gì bạn cần là thêm một MouseListener trên mỗi JLabel khi nhấp chuột vào các sự kiện, bạn có thể sử dụng 'Desktop.getDesktop(). Browse()', khi mouseEntered/mouseExited bạn có thể hành động cho lơ lửng. Bạn cũng có thể đặt con trỏ thành 'Cursor.getPredefinedCursor()' trên mỗi JLabel. –

10

Tôi đã tạo thư viện đám mây từ, Kumo (Cloud bằng tiếng Nhật), bằng Java. Kỳ lạ thay, tôi luôn thích những đám mây từ. :)

Kumo có thể tạo BufferedImages, tệp hình ảnh (PNG, BMP, v.v.) và cũng có các ví dụ hiển thị mức sử dụng trong JPanels. Dự án được mavenized và trong Maven Central để làm cho hội nhập dễ dàng hơn. Dưới đây là một vài ví dụ về các đám mây từ và có nhiều ví dụ hơn trên trang GitHub của Kumo: https://github.com/kennycason/kumo

Cũng có một ví dụ JPanel here và ảnh chụp màn hình 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

Chỉ muốn kêu vang ở đây và nói rằng sau khi đánh giá opencloud và kumo là lựa chọn của tôi, Kumo là người chiến thắng rõ ràng ở đây. Tôi thậm chí không chắc chắn nếu OpenCloud được chủ động duy trì nữa. Trang SourceForge cũ cho OC đã gửi spam trình duyệt của tôi. : / – drkstr1

0

Tôi đã sử dụng để tạo ra những đám mây openCloud java từ đơn giản sử dụng tần số từ và hoặc đăng nhập các giá trị khả năng để điều chỉnh các từ trọng lượng (font size). Những đám mây sử dụng màu sắc ngẫu nhiên và cung cấp một vòng quay ngẫu nhiên đơn giản.

kho Github here

English sample

Arabic sample

Các vấn đề liên quan