2012-04-13 73 views

回答

4

的休息動畫圖像作爲GUI的BG。我使用HTML來調整這個(x3)的大小,但如果它已經是所需的大小,可以直接將它設置爲標籤的Icon

import java.awt.*; 
import javax.swing.*; 
import javax.swing.border.EmptyBorder; 

class LabelAsBackground { 

    public static final String HTML = 
     "<html>" + 
     "<style type'text/css'>" + 
     "body, html { padding: 0px; margin: 0px; }" + 
     "</style>" + 
     "<body>" + 
     "<img src='http://pscode.org/media/starzoom-thumb.gif'" + 
     " width=320 height=240>" + 
     ""; 

    LabelAsBackground() { 
     JFrame f = new JFrame("Animated Image BG"); 
     f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
     JLabel contentPane = new JLabel(HTML); 
     contentPane.setLayout(new GridLayout()); 
     JPanel gui = new JPanel(new GridLayout(3,3,15,15)); 
     gui.setOpaque(false); 
     contentPane.add(gui); 
     gui.setBorder(new EmptyBorder(20,20,20,20)); 
     for (int ii=1; ii<10; ii++) { 
      gui.add(new JButton("" + ii)); 
     } 
     f.setContentPane(contentPane); 
     f.pack(); 
     //f.setResizable(false); // uncomment to see strange effect.. 
     f.setVisible(true); 
    } 

    public static void main(String[] args) { 
     //Create the frame on the event dispatching thread 
     SwingUtilities.invokeLater(new Runnable(){ 
      @Override 
      public void run() { 
       LabelAsBackground lab = new LabelAsBackground(); 
      } 
     }); 
    } 
} 

不確定它是不是'真的'。這似乎是一個需要很多澄清的主觀術語。我從來沒有用過這種方法,只是把它弄明白,今晚就在摸索。 ;)

+0

這是一個很有希望的開始:-) +1爲此,但同樣的想法,整個事情可以通過反之亦然,通過正常的步驟來實現。 – 2012-04-13 13:02:03

+0

*「反之亦然,通過正常步驟」*如何? (我的意思是在'我可以算'的代碼行)。) – 2012-04-13 13:04:52

+0

不,不,我的不好,只是困惑,介於兩者之間。我一直相信的,以及我今天看到的新方法。我從來沒有想過'JLabel'是什麼,除了顯示圖像和文本。這種新行爲對我來說完全是未知的,似乎我需要時間去接觸這個新事物:-)我的眼睛是廣闊的,今晚我可能不會睡覺,哈哈 – 2012-04-13 13:15:26

4

是的,有真正的理由想要添加組件到JLabel。由於在JLabel上設置和交換ImageIcons非常容易,因此想要將它們用作GUI的支持圖像並不罕見。

編輯
幽州:

AHHA的意思是說,如果我想我的容器有一個特定的背景,那麼我必須使用的JLabel爲平臺,在其上這樣的事情可以駐留?我對嗎 ?

不,您不必絕對必須使用JLabel,因爲如果需要,在JPanel中繪製背景圖像相當容易。只需在其paintComponent(...)方法中繪製圖像即可。

+0

Ahha的意思是說,如果我想讓我的容器具有特定的背景,那麼我必須使用'JLabel'作爲平臺,這樣的東西可以駐留?我對嗎 ? – 2012-04-13 12:31:39

+0

@nIcEcOw:請參閱編輯 – 2012-04-13 12:33:23

+0

哇,這看起來有趣,毫無疑問像往常一樣,翔實的答案:-) – 2012-04-13 12:52:14

5
this seems to me a bit weird, why would one wants to add 
a JPanel to a JLabel, 

肯定這就是正確的

are there any genuine reasons as to such situation can arise, 
so is it just trivial? 

沒有,是不平凡的,因爲只有JFrame/JDialog/JWindowJPanel已經得到pre_implemented LayoutManager,爲 「Custom JComponentyou have to declare proper LayoutManager, programatically

+0

哇,這是一個非常好的示例+1這個:-) – 2012-04-13 12:55:50

+2

@nIcE cOw和我加入鹽...... JLabel具有similair性質作爲JViewport(我的觀點),但JLabel阻止鼠標和鍵盤輸入,例如我無法定義(可切換)JViewport消耗鼠標和鍵盤輸入,但是這個瘋狂的JLabel在opaque(true)的API中缺少重繪(),然後在一側HFOE可能是正確的,但Andrew反對使用Html和圖標,我默認忽略所有良好的習慣(一切皆有可能) – mKorbel 2012-04-13 13:04:03

+0

LOL太真了,我很困惑 – 2012-04-13 13:07:53

相關問題