2012-01-09 42 views
6

Tôi muốn nhận ra các hình ảnh động tải sau với swing java:Java Swing tải Animation

enter image description here

Vòng tròn có để quay chiều kim đồng hồ.

Cách tốt nhất để làm cho nó là gì?

Cảm ơn bạn rất nhiều.

+0

Hoán đổi một loạt các sprites có thể làm việc cho việc này. Tất nhiên tải sẽ phải được thực hiện trong một chủ đề nền, chẳng hạn như được cung cấp bởi một SwingWorker. –

+0

Xem thêm [Hỏi & Đáp] này (http://stackoverflow.com/questions/6238037/how-do-i-align-this-text-correctly). – trashgod

Trả lời

4

Bạn có thể sử dụng lớp Animated Icon để tạo hoạt ảnh của riêng mình bằng biểu tượng hiện có.

3

Điều này có thể được vẽ bằng thành phần tùy chỉnh hoặc biểu tượng tùy chỉnh, sử dụng các cuộc gọi Java2D thông thường. Đối với tôi, nó trông giống như một số Arc2D với độ dày khá là BasicStroke được vẽ với một số GradientPaint.

Cách khác, xuất khung từ Inkscape (hoặc chương trình đồ họa khác) và tải chúng dưới dạng hình ảnh.

9

Chỉ cần sử dụng ImageIcon và gif động. xem setImageObserver trong ImageIcon.

Có thể tạo biểu tượng tải bằng nhiều trình tạo trực tuyến như AjaxLoad.

+0

VERY NICE! hữu ích! – drzymala

6

Hy vọng rằng không quá muộn cho việc này.

tôi quản lý để có được những gif động bên JPanel của tôi theo cách này:

private JPanel loadingPanel() { 
    JPanel panel = new JPanel(); 
    BoxLayout layoutMgr = new BoxLayout(panel, BoxLayout.PAGE_AXIS); 
    panel.setLayout(layoutMgr); 

    ClassLoader cldr = this.getClass().getClassLoader(); 
    java.net.URL imageURL = cldr.getResource("img/spinner.gif"); 
    ImageIcon imageIcon = new ImageIcon(imageURL); 
    JLabel iconLabel = new JLabel(); 
    iconLabel.setIcon(imageIcon); 
    imageIcon.setImageObserver(iconLabel); 

    JLabel label = new JLabel("Loading..."); 
    panel.add(iconLabel); 
    panel.add(label); 
    return panel; 
} 

Một số điểm của phương pháp này:
1. Các tập tin hình ảnh nằm trong lọ;
2. ImageIO.read() trả về BufferedImage, không cập nhật ImageObserver;
3. Một cách khác để tìm hình ảnh được nhóm trong tệp jar là hỏi trình tải lớp Java, mã đã tải chương trình của bạn, để lấy các tệp. Nó biết mọi thứ đang ở đâu.

Vì vậy, bằng cách thực hiện điều này, tôi đã có thể nhận được hình động gif của mình bên trong JPanel và nó hoạt động như một sự quyến rũ.

+1

gif động là không có tùy chọn, bởi vì nó thiếu hiệu ứng trong suốt tốt và trơn tru. Một spinner chủ yếu là cần phải minh bạch và với nền trong suốt 100%, mà gifs không hỗ trợ, mà không làm cho các hình ảnh động xấu xí và pixelated. Nó chỉ hoạt động cho các đường viền hình chữ nhật và không bị mờ dần giữa các đối tượng. Vậy ... làm thế nào để làm điều này một cách chính xác? APNG có thể làm điều đó, nhưng tất nhiên Java không hỗ trợ nó với libs. –