2012-03-05 94 views
2

我正在使用swing爲我的java程序創建一個程序/開始菜單。我想要的是我的程序在背景中播放GIF動畫,而在GIF的某個部分上隱藏了一個按鈕(如果將鼠標懸停在它上面,它只會顯示它的存在)。我的問題是這樣的:如何在動畫GIF的背景上創建隱形按鈕?

A)我不知道如何獲得動畫gif播放,而編程等待按鈕按下。 B)我如何使JButton不可見?

任何幫助,將不勝感激,謝謝。

-JXP

+0

* 「我的問題是這樣的:」 *。 。用戶對「不可用GUI」的投訴? '隱形按鈕' - 咩!讓它們可見或不要將它們放在您期望我使用的任何GUI中。這個GUI是什麼?兒童遊戲? (如果是這樣,我保留改變我的想法的權利,並且非常喜歡它); – 2012-03-05 15:22:56

+0

@AndrewThompson按鈕不是隱形的,請參閱,但我想要的按鈕是動畫gif包含按鈕.. 。例如,gif是一個gif,我希望gif的一部分(它有單詞start)作爲按鈕,而不是默認的java按鈕之一,因此它不適合。 – JXPheonix 2012-03-24 14:07:55

回答

4

我從來沒有在Swing使用gifanimated gif,但你可以使用此代碼

enter image description hereenter image description here

import java.awt.Insets; 
import java.awt.event.MouseEvent; 
import java.awt.event.MouseListener; 
import javax.swing.Icon; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.SwingUtilities; 
import javax.swing.UIManager; 

public class MyToggleButton extends JFrame { 

    private static final long serialVersionUID = 1L; 
    private Icon errorIcon = UIManager.getIcon("OptionPane.errorIcon"); 
    private Icon infoIcon = UIManager.getIcon("OptionPane.informationIcon"); 
    private Icon warnIcon = UIManager.getIcon("OptionPane.warningIcon"); 

    public MyToggleButton() { 
     final JButton toggleButton = new JButton(); 
     toggleButton.setBorderPainted(false); 
     toggleButton.setBorder(null); 
     toggleButton.setFocusable(false); 
     toggleButton.setMargin(new Insets(0, 0, 0, 0)); 
     toggleButton.setContentAreaFilled(false); 
     toggleButton.setIcon((errorIcon)); 
     toggleButton.setSelectedIcon(infoIcon); 
     toggleButton.setRolloverIcon((infoIcon)); 
     toggleButton.setPressedIcon(warnIcon); 
     toggleButton.setDisabledIcon(warnIcon); 
     add(toggleButton); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     pack(); 
     setVisible(true); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       MyToggleButton t = new MyToggleButton(); 
      } 
     }); 
    } 
} 
+0

我會試試這個,謝謝。 – JXPheonix 2012-03-05 14:57:30

+0

很高興爲您效勞 – mKorbel 2012-03-05 15:05:19

+0

+1您也可以執行'圖標'來完成動畫,如[見](http://stackoverflow.com/a/3484251/230513)所示。 – trashgod 2012-03-05 16:55:37