最近小編一直在做項(xiàng)目阁苞,準(zhǔn)備藍(lán)橋杯祠挫,準(zhǔn)備期末考試,所有一直沒有時(shí)間更新博文等舔,今日正值周末,小編于圖書館做項(xiàng)目期間慌植,出現(xiàn)了小問題,并解決了丈钙,特地來簡書更新一波....
在
javaSwing窗口
中交汤,我們常使用JdesktopPane面板
,它是一個(gè)可以裝載JInternalFrame
的容器蜻展。
為了整體界面美觀,小編在設(shè)計(jì)JdesktopPane面板時(shí)伍茄,發(fā)現(xiàn)JdesktopPane可以設(shè)置背景顏色施逾,但是沒有直接為JdesktopPane設(shè)置背景圖片的方法例获,也不可以給JdesktopPane添加icon
曹仗。
左思右想,小編想出了一個(gè)好主意怎茫,就是給JdesktopPane面板添加一個(gè)
JLable標(biāo)簽
,將這個(gè)JLable標(biāo)簽大小與JdesktopPane面板大小設(shè)置一致蜜宪,再給這個(gè)JLable標(biāo)簽添加icon祥山,就能成功的給JdesktopPane面板添加背景圖片啦!(效果見下圖)
高興之余澳窑,小編隨即點(diǎn)開了上方的菜單項(xiàng)供常,發(fā)現(xiàn)JInternalFrame子面板不顯示了!頓時(shí)小編傻了眼话侧,仔細(xì)一看在發(fā)現(xiàn),原來設(shè)置背景圖片的JLable標(biāo)簽悲立,會(huì)覆蓋住已經(jīng)彈出的JInternalFrame子面板新博。也就是說,JInternalFrame會(huì)被JLable標(biāo)簽覆蓋住赫悄。小編又傻了。埂淮。姑隅。
在游覽了各大論壇和各個(gè)大神的技術(shù)貼后讲仰,我大概知道要修改疊放層次痪蝇,或者說修改面板與組件之間的顯示優(yōu)先級(jí)冕房。但是論壇大神們總是點(diǎn)睛之筆趁矾,或者隨手丟下三兩行代碼,讓人依然摸不著頭腦毫捣。。
所謂物極必反培漏,無奈之下胡本,小編靈機(jī)一動(dòng),想出了一個(gè)辦法:每當(dāng)我點(diǎn)開一個(gè)JInternalFrame子容器時(shí)珊佣,我添加一個(gè)點(diǎn)擊事件披粟,只要彈出JInternalFrame面板,就立即設(shè)置JLable背景標(biāo)簽隱藏(不可見)守屉。小編親測(cè)有效拇泛,疑難雜癥終于搞定了。俺叭。。(效果見下圖)
代碼塊:
添加背景圖片:
desktopPane = new JDesktopPane();
desktopPane.setBackground(Color.WHITE);
contentPane.add(desktopPane, BorderLayout.CENTER);
backgroundLabel = new JLabel("");
backgroundLabel.setIcon(new ImageIcon(MainFrm.class.getResource("圖片路徑")));
隱藏背景圖片:
menuItem_3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
backgroundLabel.setVisible(false);
SearchCar searchcar=new SearchCar();
searchcar.setVisible(true);
desktopPane.add(searchcar);
}
});