ボタンが押されると画像が上書きされるプログラムを作りたい
経済学のプログラムを作っています。右上のボタンを押すと左の画面に今ある画像が切り替わって、新しい画像が上書き表示されるプログラムを作りたいのですが、方法がわかりません。いろいろ試してみましたが、自分の力では解決できないと思いましたため、質問させて頂きます。GUIの枠組みはできているので、具体的な方法を教えていただければと思います。よろしくお願いします。
発生している問題・エラーメッセージ
エラーは特にございません
該当のソースコード
package keizaiapps;
import java.awt.Font;
import java.awt.GridLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.BevelBorder;
public class Haikei extends JFrame {
public static void main (String args [])
{
Haikei frame = new Haikei();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setBounds(300, 100, 2000, 1000); frame.setTitle("kaizaiapps"); frame.setVisible(true); } Haikei(){ /*定義*/ JPanel p1 = new JPanel(); JPanel p2 = new JPanel(); JPanel p3 = new JPanel(); JPanel p4 = new JPanel(); JPanel p5 = new JPanel(); JPanel p6 = new JPanel(); JPanel p7 = new JPanel(); JPanel p8 = new JPanel(); JPanel p9 = new JPanel(); JPanel p10 = new JPanel(); JPanel p11 = new JPanel(); JPanel p12 = new JPanel(); JPanel p13 = new JPanel(); JPanel p14 = new JPanel(); JPanel p15 = new JPanel(); JPanel p16 = new JPanel(); JPanel p17 = new JPanel(); JPanel p18 = new JPanel(); JPanel p19 = new JPanel(); JPanel p20 = new JPanel(); JPanel p21 = new JPanel(); JPanel p22 = new JPanel(); JPanel p23 = new JPanel(); JPanel p24 = new JPanel(); JPanel p25 = new JPanel(); JPanel p26 = new JPanel(); JPanel p27 = new JPanel(); JPanel p28 = new JPanel(); JPanel p29 = new JPanel(); JPanel p30 = new JPanel(); JLabel l1 = new JLabel("ミクロ経済学"); l1.setFont(new Font("MS ゴシック", Font.BOLD, 30)); l1.setHorizontalTextPosition(JLabel.CENTER); l1.setVerticalTextPosition(JLabel.CENTER); JLabel l2 = new JLabel("マクロ経済学"); l2.setFont(new Font("MS ゴシック", Font.BOLD, 30)); l2.setHorizontalTextPosition(JLabel.CENTER); l2.setVerticalTextPosition(JLabel.CENTER); JLabel l3 = new JLabel("取引量"); l3.setFont(new Font("MS ゴシック", Font.BOLD, 30)); l3.setHorizontalTextPosition(JLabel.CENTER); l3.setVerticalTextPosition(JLabel.CENTER); JLabel l4 = new JLabel("価格"); l4.setFont(new Font("MS ゴシック", Font.BOLD, 30)); l4.setHorizontalTextPosition(JLabel.CENTER); l4.setVerticalTextPosition(JLabel.CENTER); JLabel l5 = new JLabel("失業者"); l5.setFont(new Font("MS ゴシック", Font.BOLD, 30)); l5.setHorizontalTextPosition(JLabel.CENTER); l5.setVerticalTextPosition(JLabel.CENTER); JLabel l6 = new JLabel("賃金"); l6.setFont(new Font("MS ゴシック", Font.BOLD, 30)); l6.setHorizontalTextPosition(JLabel.RIGHT); l6.setVerticalTextPosition(JLabel.CENTER); JLabel l7 = new JLabel(""); JLabel l8 = new JLabel(""); JLabel l9 = new JLabel(""); JLabel l10 = new JLabel(""); JButton b1 = new JButton("好況"); JButton b2 = new JButton("不況"); JButton b3 = new JButton("正の外部性"); JButton b4 = new JButton("負の外部性"); JButton b5 = new JButton("好 況"); JButton b6 = new JButton("不 況"); JButton b7 = new JButton("大不況"); JButton b8 = new JButton("成長戦略"); BevelBorder border = new BevelBorder(BevelBorder.RAISED); ImageIcon icon1 = new ImageIcon("図1.png"); JLabel label1 = new JLabel(icon1); ImageIcon icon3 = new ImageIcon("図3.png"); JLabel label3 = new JLabel(icon3); ImageIcon icon4 = new ImageIcon("図4.png"); JLabel label4 = new JLabel(icon4); /* 定義終了 パネル貼付 */ setLayout(new GridLayout(1, 2)); add(p1); add(p2); p1.setLayout(new GridLayout(3, 1)); p1.setBorder(border); p1.add(p28); p28.add(label1); p1.add(p29); p29.add(label3); p1.add(p30); p30.add(label4); p2.setLayout(new GridLayout(3, 1)); p2.add(p25); p2.add(p26); p2.add(p27); p25.setLayout(new GridLayout(2, 1)); p25.add(p3); p25.add(p4); p25.setBorder(border); p26.setLayout(new GridLayout(2, 1)); p26.add(p5); p26.add(p6); p26.setBorder(border); p27.setLayout(new GridLayout(2, 1)); p27.add(p7); p27.add(p8); p27.setBorder(border); p3.add(l1); p4.setLayout(new GridLayout(1, 4)); p4.add(p9); p9.add(b1); p4.add(p10); p10.add(b2); p4.add(p11); p11.add(b3); p4.add(p12); p12.add(b4); p5.add(l2); p6.setLayout(new GridLayout(1, 4)); p6.add(p13); p13.add(b5); p6.add(p14); p14.add(b6); p6.add(p15); p15.add(b7); p6.add(p16); p16.add(b8); p7.setLayout(new GridLayout(1, 4)); p7.add(p17); p17.add(l3); p17.setBorder(border); p7.add(p18); p18.add(l4); p18.setBorder(border); p7.add(p19); p19.add(l5); p19.setBorder(border); p7.add(p20); p20.add(l6); p20.setBorder(border); p8.setLayout(new GridLayout(1, 4)); p8.add(p21); p21.add(l7); p21.setBorder(border); p8.add(p22); p22.add(l8); p22.setBorder(border); p8.add(p23); p23.add(l9); p23.setBorder(border); p8.add(p24); p24.add(l10); p24.setBorder(border); setSize(300, 200); show(); } ![イメージ説明](41aa318474372c34449faa883467a72d.png)
}
試したこと
public void actionPerformed(ActionEvent e){ や画像をリセットするためにremoveAllなどを使ってみましたが、うまくいきませんでした。
補足情報(FW/ツールのバージョンなど)
Eclips,java