2016-05-23 16 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; 

もI'vは、タイマー( TimerTask)ごとに1秒でそれを試してみました。リフレッシュフレーム

誰もがこれについて考えていますか?

+0

は、(前のJLabelに追加され、集中的なI/Oは、アイコン/ ImageIconのためのフラッシュを()必要なので、より良い実行時にロードするイメージアイコンとしてローカル変数を使用してもwiil)のJLabelに画像を追加し、二つの方法があります2番目の方法はpaintComponentを使ってJPanelにペイントすることです。デフォルトで両方の方法が公式のOraclesチュートリアルで説明されています – mKorbel

+0

ここでは、イメージの設定方法を変更してこの回答を使用できます。プログラムがループしてペイントを呼び出すときにイメージを設定します。 [関連する質問](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からイメージを変更します。それは動作していない!!それはthats。

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. 
関連する問題