Java Swing 画像切り替え

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
けだま
記事: 8
登録日時: 7年前

Java Swing 画像切り替え

#1

投稿記事 by けだま » 7年前

Swingを使い画像の切り替えプログラムを作ったのですが、ボタンを押したとき、JLabelのLabelDayo0がImg1からImg0に切り替わりません。なぜでしょうか?
おそらく、下記URLに書かれてる問題と同じだと思うのですが良くわかりません。切り替えの概念はなんとなく分かります。
http://detail.chiebukuro.yahoo.co.jp/qa ... 1036862235


コード:

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Parts1 extends JFrame {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	
	//
	
	private ImageIcon Img1 = new ImageIcon("C:\\Java\\Kadai\\workspace\\MahjongHaiGazou\\1.gif"); //1萬
	
	private JButton MonndaiButton;
	private JLabel LabelDayo0;


	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Parts1 frame = new Parts1();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public Parts1() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 592, 371);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		MonndaiButton = new JButton("\u554F\u984C\u4F5C\u6210");
		MonndaiButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				ImageIcon Img0 = new ImageIcon("C:\\Java\\Kadai\\workspace\\MahjongHaiGazou\\0.gif"); //裏牌
				LabelDayo0 = new JLabel(Img0);	
			}
		});
		MonndaiButton.setBounds(54, 276, 91, 21);
		contentPane.add(MonndaiButton);
		
		LabelDayo0 = new JLabel(Img1);	//
		LabelDayo0.setBounds(30, 100, 78, 40);	
		contentPane.add(LabelDayo0);
		
		

	}
}
 

ISLe
記事: 2650
登録日時: 13年前
連絡を取る:

Re: Java Swing 画像切り替え

#2

投稿記事 by ISLe » 7年前

59行目で作成したJLabelは、フレームのContentPaneにセットしていないので、フレームに影響しません。

提示されたURLの記事は、このコードをフレームのContentPaneにセットするように変更してもダメ、ということが書かれています。

また、JLabelを新たに生成してセットすると、JLabelが増えていくことになる(※)ので、画像を切り替えているとは言えません。
※同じ場所に同じ大きさで配置するといちばん上に表示されたものだけが見えることになります。
無駄にメモリを消費することにもなります。



画像を切り替えたいのであれば、59行目を
LabelDayo0.setIcon(Img0);
と記述してください。
既にフレームのContentPaneにセットしてあるJLabelのアイコン画像を変更するという意味です。

オフトピック
(追記)
よく見たらcontentPaneという変数名だけどフレームのContentPaneを使ってなかった。
結果としては変わらないからまいっか。

けだま
記事: 8
登録日時: 7年前

Re: Java Swing 画像切り替え

#3

投稿記事 by けだま » 7年前

解決しました、ありがとうございます!

閉鎖

“C言語何でも質問掲示板” へ戻る