今天在瀏覽各種問題的時候,我遇到了一個QUESTION,這在我看來有點奇怪,爲什麼會想把一個JPanel
加到JLabel
,有沒有真正的理由可以出現這種情況,不重要的 ?爲什麼要將JPanel添加到JLabel,在什麼情況下會出現這種情況?
回答
的休息動畫圖像作爲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();
}
});
}
}
不確定它是不是'真的'。這似乎是一個需要很多澄清的主觀術語。我從來沒有用過這種方法,只是把它弄明白,今晚就在摸索。 ;)
是的,有真正的理由想要添加組件到JLabel。由於在JLabel上設置和交換ImageIcons非常容易,因此想要將它們用作GUI的支持圖像並不罕見。
編輯
幽州:
AHHA的意思是說,如果我想我的容器有一個特定的背景,那麼我必須使用的JLabel爲平臺,在其上這樣的事情可以駐留?我對嗎 ?
不,您不必絕對必須使用JLabel,因爲如果需要,在JPanel中繪製背景圖像相當容易。只需在其paintComponent(...)
方法中繪製圖像即可。
Ahha的意思是說,如果我想讓我的容器具有特定的背景,那麼我必須使用'JLabel'作爲平臺,這樣的東西可以駐留?我對嗎 ? – 2012-04-13 12:31:39
@nIcEcOw:請參閱編輯 – 2012-04-13 12:33:23
哇,這看起來有趣,毫無疑問像往常一樣,翔實的答案:-) – 2012-04-13 12:52:14
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
/JWindow
和JPanel
已經得到pre_implemented LayoutManager
,爲 「Custom JComponent
」 you have to declare proper LayoutManager, programatically
哇,這是一個非常好的示例+1這個:-) – 2012-04-13 12:55:50
@nIcE cOw和我加入鹽...... JLabel具有similair性質作爲JViewport(我的觀點),但JLabel阻止鼠標和鍵盤輸入,例如我無法定義(可切換)JViewport消耗鼠標和鍵盤輸入,但是這個瘋狂的JLabel在opaque(true)的API中缺少重繪(),然後在一側HFOE可能是正確的,但Andrew反對使用Html和圖標,我默認忽略所有良好的習慣(一切皆有可能) – mKorbel 2012-04-13 13:04:03
LOL太真了,我很困惑 – 2012-04-13 13:07:53
- 1. 爲什麼在這三種情況下
- 2. 爲什麼在這種情況下
- 3. 爲什麼在這種情況下
- 4. 這種情況下爲什麼會出現分段錯誤?
- 5. 爲什麼會發生這種情況?
- 6. 爲什麼在這種情況下輸出不會是4?
- 7. 「:」在這種情況下做什麼?
- 8. sched_yield在這種情況下做什麼?
- 9. 有什麼用在這種情況下
- 10. 什麼是在這種情況下
- 11. *在這種情況下做什麼?:
- 12. .map()在這種情況下做什麼?
- 13. 什麼是在這種情況下
- 14. 什麼在這種情況下
- 15. 爲什麼在兩種情況下都會出現錯誤?
- 16. 在這種情況下,爲什麼我會得到Unreachable Code?
- 17. 爲什麼在這種情況下會話到sql服務器?
- 18. SQL Server遞歸CTE - 爲什麼會出現這種情況?
- 19. 爲什麼會出現這種情況與SUBSTR空間
- 20. 爲什麼會出現這種情況與Python的list.sort?
- 21. 爲什麼會出現這種情況?__ proto__ vs prototype?
- 22. 爲什麼會出現這種情況的一個「S」
- 23. 爲什麼會出現這種情況與
- 24. 循環不起作用,爲什麼會出現這種情況?
- 25. 爲什麼QWebFrame :: evalutateJavaScript在這種情況下什麼都不做?
- 26. 什麼是wrapper_descriptor,在這種情況下爲什麼是Foo .__ init __()?
- 27. 這種情況下最好的情況是什麼?
- 28. 爲什麼配置DisposableObserver在這種情況下很重要
- 29. 爲什麼我需要在這種情況下演員陣容?
- 30. 爲什麼在這種情況下需要componentWillReceiveProps?
這是一個很有希望的開始:-) +1爲此,但同樣的想法,整個事情可以通過反之亦然,通過正常的步驟來實現。 – 2012-04-13 13:02:03
*「反之亦然,通過正常步驟」*如何? (我的意思是在'我可以算'的代碼行)。) – 2012-04-13 13:04:52
不,不,我的不好,只是困惑,介於兩者之間。我一直相信的,以及我今天看到的新方法。我從來沒有想過'JLabel'是什麼,除了顯示圖像和文本。這種新行爲對我來說完全是未知的,似乎我需要時間去接觸這個新事物:-)我的眼睛是廣闊的,今晚我可能不會睡覺,哈哈 – 2012-04-13 13:15:26