2016-05-23 63 views
0

我在更換JFrame背景圖片時遇到小問題。首先我已經添加了背景圖片JLabel和應用程序運行良好。但現在我需要動態地改變它。如何動態更改JFrame背景?

我試圖此代碼:

label = new JLabel(new ImageIcon(Toolkit.getDefaultToo... // old background image 

public void changeImage(){ 

label.setVisible(false); 

label2 = new JLabel(new ImageIcon(Toolkit.getDefaultToolkit().getImage(getClass().getResource("weatherall.gif")))); 
setContentPane(label2); // new Background image 
label2.setVisible(true); 
repaint(); 

} 
switch (cmb.getSelectedItem().toString()) { 
    case "ISTANBUL": 
     x = 0; 
     changeImage(); 
     //some codes......vs.vs.    
     break; 

另外心中已經用計時器(TimerTask)每1秒嘗試過。刷新框架

有人對此有個想法嗎?

+0

有兩種方式,添加圖片到JLabel的(更好wiil是通過使用本地變量在運行時加載的ImageIcon,因爲密集的I/O需要的圖標/ ImageIcon的沖水(),之前被添加到一個JLabel)第二種方法是通過使用paintComponent使用JPanel繪畫,默認情況下,這兩種方法都在官方的Oracles教程中描述 – mKorbel

+0

您可以在這裏使用這個答案,修改圖像的設置方式,您可以通過幾種方法當程序循環並調用paint時設置圖像。 [相關問題](http://stackoverflow.com/questions/1064977/setting-background-images-in-jframe?rq=1) – Underbalanced

+0

@mkorbel你可以看到我的源代碼之後,你可以更好地理解。我需要在運行時***更改圖像***和我的應用程序擴展JFrame ... [鏈接](https://drive.google.com/file/d/0ByPqPK4HeCfMV3BNZFpJczBoTVU/view?usp=sharing) –

回答

0

現在我們需要創建JLabel並將其大小設置爲背景(伸展它)之後,只需將圖像添加到JLabel中,並且當您想要更改它時,只需更改同一JLabel中的圖像,不要嘗試添加另一個JLabel,它不工作!! ...就是這樣。

JLabel label = new JLabel(new ImageIcon(Toolkit.getDefaultToolkit().getImage(getClass().getResource(localweather)))); 
setContentPane(label);//when u want to change background image just replace 'localweather' another image.