

寺や神社を紹介する対話的アプリケーションを作成しています。  
ボタンを押して、寺の画像を表示を表示したり、音を鳴らしたりすることはできています。  
あとは、画像の右側に寺についての紹介文を表示させたいです。  
if文を使うのかな？とは思ったのですが、if文の中身をどのように書いたら良いのかまったくわかりません。  
どなたか教えてください。  
また、if文以外の方法もありましたら、教えてください。

[code]

    import java.awt.*;
    import java.awt.event.*;
    import java.applet.AudioClip;
    import javax.swing.JApplet;
    
    public class Project2020_2a extends Frame {
    
      
        // マウスのｘ座標の記録用変数 Mx,　ｙ座標の記録用変数 Myです。
        int Mx = 0, My = 0;
        //
        // gを、標準グラフィクス描画対象として使います。
        Graphics g;
        //
        // g2を、高度なグラフィクス機能（Graphics2D）を使う場合の描画対象として使います。
        Graphics2D g2;
        //
        // Frame部品の一種である自分を、リスナーオブジェクトから呼び出せるようにするために、
        //　入れ物　myFrame　を用意します
        Frame myFrame;
        //
        // 画像ファイルから読み込む複数の画像を入れるためのオブジェクトです
        //（今回は配列として用意）。
        Image img[],im;
        //
        // 音声ファイルを入れるためのオブジェクトです（今回は配列として用意）。
        AudioClip ac[];
        //
        // ボタン部品の入れ物 bt1 を用意します。
        Button bt1,bt2,bt3,bt4;
        //
        // 描画する画像番号を指定するための変数です（ドラッグ動作ごとに０～９を循環させます）。
        int m = 0;
    
        //
        //////////////////////////////////////////    
        //①　このプログラムの起動
        //////////////////////////////////////////    
        public static void main(String[] args) {
            //②　このプログラム本体の生成
            Project2020_2a pj = new Project2020_2a();
            Project2020_2a.java fs = new Project2020_2a.java();// ③へ
        }
    
        //③　このプログラムの生成内容 (この部分はコンストラクタと呼ぶ)
        public Project2020_2a() {
            //④　ウインドウタイトルの設定
            super("寺や神社");
    
           
            myFrame = this;
            //
            // このアプリケーションが持つ描画面を受け取り、gという名前で呼び出せるようにします。
            g = myFrame.getGraphics();
            
          
            g2 = (Graphics2D) g;
          
            setBackground(new Color(165, 230, 230));
            //
    
            //
            //　用意しておいた10枚の画像を順番に画像用配列img[]に読み込み、
            //プログラム中で利用できるようにしています。
            // 　ファイル名は　T0.GIF～T9.GIF　ですが、for文で数字部分を変えながら
            // ファイル名を指定しています。
            Toolkit tk = getToolkit();
            
            im = tk.getImage("src/images/T0.GIF");
            
            
            img = new Image[8];
            for (int i = 1; i < 8; i++) {
                img[i] = tk.getImage("src/images/T" + i + ".GIF");
            }
            
            
            bt2 = new Button("神奈川");
            bt3 = new Button("福岡");
            bt4 = new Button("日本地図");
            bt2.setForeground(Color.RED);
            bt3.setForeground(Color.BLUE);
            
              bt2.addActionListener(new ActionListener() {
                //　ボタンがクリックされたときに行う処理を書く。
                public void actionPerformed(ActionEvent ae) {
            Toolkit tk = getToolkit();
            im = tk.getImage("src/images/aka.jpg");
                        
            repaint();
            ac[2].play();
                }
               });
             
               
               bt3.addActionListener(new ActionListener() {
                //　ボタンがクリックされたときに行う処理を書く。
                public void actionPerformed(ActionEvent ae) {
            Toolkit tk = getToolkit();
            im = tk.getImage("src/images/ao.jpg");
                repaint();
                ac[4].play();
                }
               });
               
             bt4.addActionListener(new ActionListener() {
                //　ボタンがクリックされたときに行う処理を書く。
                public void actionPerformed(ActionEvent ae) {
            Toolkit tk = getToolkit();
            im = tk.getImage("src/images/T0.gif");
            repaint();
            ac[5].play();
                }
               });
    
        
    
            //　用意しておいた3つの音を順番に音の格納用配列に読み込み、
            // プログラム中で利用できるようにしています。
            int numSounds = 7;
            ac = new AudioClip[numSounds];
            
            for (int i = 0; i < numSounds; i++) {
            ac[i] = JApplet.newAudioClip(getClass().getClassLoader().getResource("sounds/ss"+i+".wav"));
            }
         
            bt1 = new Button("＜消去ボタン＞");
            //　画面にボタンを貼り付けます。２コ以上作成すると順番に左から並びます。
            this.setLayout(new BorderLayout());
    
            this.add(bt1, BorderLayout.NORTH);
            //　ボタンbt1に　リスナー（ボタンの場合はアクションリスナー）を貼り付けます。
            bt1.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent ae) {
                
                    repaint();
                  。
                    ac[3].play();
                }
            });
            
             
            Panel pnl = new Panel();
            this.add(pnl, BorderLayout.NORTH);
            //パネルに，ボタンを追加する（自動的に横に並ぶ）
            pnl.add(bt2);
            pnl.add(bt3);
            pnl.add(bt4);
            pnl.add(bt1);
            
    
            ///////////////////////////////////////////////////////////////////////////
            // (1)マウスの瞬間動作に反応する「イベントリスナー」MouseListenerの登録
            ///////////////////////////////////////////////////////////////////////////
            this.addMouseListener(
                    new MouseAdapter() {
                // ①マウスがクリックされたときの処理
                public void mouseClicked(MouseEvent e) {
                    System.out.println("(1)クリックされました...");
                    //マウスの位置に画像を描画しています。
                    //また、描画のたびに画像番号を切り替えています）。
                    Graphics g = myFrame.getGraphics();
                    m++;
                    m = (m > 9) ? 0 : m;
                    g.drawImage(img[m], e.getX(), e.getY(), myFrame);
                }
    
                //　②マウスカーソルが画面内に入ったときの処理
                public void mouseEntered(MouseEvent e) {
                    System.out.println("(2)画面に入りました...");
                    ac[0].play();
                }
    
                //　③マウスカーソルが画面から出たときの処理
                public void mouseExited(MouseEvent e) {
                    System.out.println("(3)画面から出ました...");
                }
    
                //　④マウスボタンが押されたときの処理
                public void mousePressed(MouseEvent e) {
                    System.out.println("(4)ボタンが押されました...");
                      ac[6].play();
                }
    
                //　⑤マウスボタンを放したときの処理
                public void mouseReleased(MouseEvent e) {
                    System.out.println("(5)ボタンが放されました...");
                }
            });
    
            ///////////////////////////////////////////////////////////////////////////
            // (2)マウスの連続動作に反応する「イベントリスナー」MouseMotionListenerの登録
            ///////////////////////////////////////////////////////////////////////////
            this.addMouseMotionListener(
                    new MouseMotionAdapter() {
                //　⑥ドラッグしたときの処理
                @Override
                public void mouseDragged(MouseEvent e) {
                    System.out.println("(6)マウスドラッグ中です...");
                    //マウスの位置に画像を描画しています。
                    //また、描画のたびに画像番号を切り替えています）。
                    Graphics g = myFrame.getGraphics();
                    m++;
                    m = (m > 9) ? 0 : m;
                    g.drawImage(img[m], e.getX(), e.getY(), myFrame);
                  
                }
    
                //　⑦マウスを動かしたときの処理
                @Override
                public void mouseMoved(MouseEvent e) {
                    System.out.println("(7)マウス移動中です...");
                }
            });
    
            //⑤　ウィンドウを閉じるための動作の設定
            addWindowListener(new SampleWindowListner());
            //⑥　ウィンドイの表示サイズの設定
            setSize(1000, 1000);
            //⑦　ウィンドウ部品（Frame)を表示させる（指示しないと表示されない）
            setVisible(true);
            //⑧　表示のための処理　⑨へ
        }
    
        
       
        public void paint(Graphics g) {
            this.g = g;
            //⑩　描画用部品ｇに文字列を書き込む　（）内に，文字列，ｘ座標，y座標を書く
            //文字フォントを作成します。
            Font f = new Font("TimesRoman", Font.BOLD, 12);
            // フォントを画面に設定します。
            g.setFont(f);
            g.setColor(Color.BLUE);
            g.drawString("＝＝　 2020　＝＝", 50, 50);
            g.setColor(new Color(21, 179, 74));
            g.drawString("ドラッグすると", 30, 135);
            g.setColor(new Color(24,9,9));
            g.drawString("黒く塗った都道府県のもの", 120, 135);
            g.setColor(new Color(21, 179, 74));
            g.drawString("が上から順に表示されます。", 280, 135);
            
    
    
            g.drawImage(im, 150, 150, this);
        }
    
        private static class java {
    
            public java() {
            }
        }
    
        //　ウィンドウを閉じる動作で行う処理
        class SampleWindowListner extends WindowAdapter {
    
            public void windowClosing(WindowEvent e) {
    
                System.exit(0);
            }
        }
    
    }
    
[/code]


CC BY-SA 4.0
2020-11-13T11:21:42.373
71930
2020-11-14T03:25:16.453
2020-11-13T14:29:37.793
3060
42712
question
java
ボタンを押して画面内に文字を表示させるには


スタックオーバーフローへようこそ！

このコードを独力で書き上げられたならば素晴らしい成果だと思います。  
しかし変数や配列の使い方について少々こんがらかってきているところでしょうか。

結論から申し上げますと、紹介文を書くのにif文は必要ありません。  
「画像の右側に」「テキストを表示」するロジックへの理解があるとよろしいでしょう。  
つまり前者を実現するために[BorderLayout](https://docs.oracle.com/javase/jp/8/docs/api/java/awt/BorderLayout.html)の知識が、後者を実現するためにコントロール(サンプルコードでは[TextArea](https://docs.oracle.com/javase/jp/8/docs/api/java/awt/TextArea.html)を使用)およびString配列の知識が求められます。

末尾のサンプルコードを実行しますと下記の赤色を除いた画面が表示されるはずです。  
※実行前にimagesフォルダの横にtextsフォルダを作成し、その中にT0.TXTなどのテキストファイルを作成するとテキストの中身が表示されます。

[![実行イメージ](https://i.stack.imgur.com/xns3d.png)](https://i.stack.imgur.com/xns3d.png)

ご質問のコードで既にボタンを配置なされているのを流用して、画面中央(`BorderLayout.CENTER`)に画像用のパネル、画面右(`BorderLayout.EAST`)に紹介文を追加するのが一般的な解法です。

この回答は、ご質問内容から「どこに何の目的でif文を記述したいのか」「どのように紹介文を記述したいのか」が読み取れないまま、推測での回答を含んでおります。  
回答内容が意図したものから外れていましたら[良い質問をするには？](https://ja.stackoverflow.com/help/how-to-
ask)や[再現可能な短いサンプルコードの書き方](https://ja.stackoverflow.com/help/minimal-
reproducible-example)を参考に編集または新しい質問の作成をなさってください。

蛇足1:

既に画像の「上側に」文字列を表示するコードは`public void paint(Graphics g)`の中で実現されています。  
例えば`g.drawString("＝＝ 2020 ＝＝", 50, 50);`の`50, 50`を`800,
50`などに書き換えると画像の「右上側に」文字列が表示されますので、その応用で画像の紹介文を表示することも可能です。

蛇足2:

今回のプログラムを作るにあたって使用している教則本やWebページはJavaFXやSwingなどのコンポーネントに言及されていないのでしょうか？  
今回使っているjava.awtコンポーネントは用意されているプロパティなどの機能が少なく、上記のコンポーネントを使用する例が主流です。  
ご質問のコードでJAppletがインポートされていますが、アプレットは[廃止](https://ja.wikipedia.org/wiki/Java%E3%82%A2%E3%83%97%E3%83%AC%E3%83%83%E3%83%88)の流れが決定していますのでご注意ください。

蛇足3:

対話式プログラムはコマンドライン(文字列だけ表示される黒い画面)で、入力を伴うプログラムを指すことが一般的です。  
今回は画面のボタンなどを操作するグラフィカルユーザインターフェース(GUI)プログラムですので、あまり対話式プログラムとは表現しないと存じます。

[code]

    import java.awt.*;
    import java.awt.event.*;
    import java.awt.image.BufferedImage;
    import java.io.IOException;
    import java.nio.charset.Charset;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class Project2020_2a extends Frame {
    
        // テキストファイルから読み込む複数の紹介文を入れるためのオブジェクトです
        //（今回は配列として用意）。
        String explains[];
        // ボタン部品の入れ物
        Button btPrev, btNext;
    
        //////////////////////////////////////////    
        //①　このプログラムの起動
        //////////////////////////////////////////    
        public static void main(String[] args) {
            //②　このプログラム本体の生成
            Project2020_2a pj = new Project2020_2a();
            //⑦　ウィンドウ部品（Frame)を表示させる（指示しないと表示されない）
            pj.setVisible(true);
        }
    
        //③　このプログラムの生成内容 (この部分はコンストラクタと呼ぶ)
        public Project2020_2a() {
            //④　ウインドウタイトルの設定
            super("寺や神社");
            setBackground(new Color(165, 230, 230));
    
            //イメージ用のパネルを画面中央に追加する
            ImagePanel imgPanel = new ImagePanel();
            add(imgPanel, BorderLayout.CENTER);     // ②
    
            //紹介文用のラベルを画面右に追加する
            TextArea explainLabel = new TextArea();
            explainLabel.setEditable(false);
            explainLabel.setFocusable(false);
            explainLabel.setPreferredSize(new Dimension(200, 200));
            add(explainLabel, BorderLayout.EAST);    // ③
    
            //紹介文の読み込み
            explains = new String[10];
            for (int i = 0; i < explains.length; i++) {
                String path = String.format("src/texts/T%d.TXT", i);
                try {
                    explains[i] = new String(Files.readAllBytes(Paths.get(path)), Charset.forName("UTF-8"));
                } catch (IOException ex) {
                    explains[i] = String.format("寺%dの紹介文が\n見つかりませんでした。", i);
                }
            }
            explainLabel.setText(explains[0]);
    
            //ボタンを定義し、画面上に追加する
            btPrev = new Button("前へ");
            btNext = new Button("次へ");
    
            btPrev.addActionListener(new ActionListener() {
                //　ボタンがクリックされたときに行う処理を書く。
                @Override
                public void actionPerformed(ActionEvent ae) {
                    int index = imgPanel.showPrevious();
                    explainLabel.setText(explains[index]);
                }
            });
    
            btNext.addActionListener(new ActionListener() {
                //　ボタンがクリックされたときに行う処理を書く。
                @Override
                public void actionPerformed(ActionEvent ae) {
                    int index = imgPanel.showNext();
                    explainLabel.setText(explains[index]);
                }
            });
    
            Panel pnl = new Panel();
            this.add(pnl, BorderLayout.NORTH);  // ①
            //パネルに，ボタンを追加する（自動的に横に並ぶ）
            pnl.add(btPrev);
            pnl.add(btNext);
    
            //⑤　ウィンドウを閉じるための動作の設定
            addWindowListener(new WindowAdapter() {
                @Override
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            });
            //⑥　ウィンドウの表示サイズの設定
            setSize(360, 180);
        }
    
    }
    
    class ImagePanel extends Panel {
    
        // 画像ファイルから読み込む複数の画像を入れるためのオブジェクトです
        //（今回は配列として用意）。
        Image img[];
        // 描画する画像番号を指定するための変数です（ドラッグ動作ごとに０～９を循環させます）。
        int m = 0;
    
        public ImagePanel() {
            //サンプルコードのため、画像ファイルを使わずに画像を作成する
            img = new Image[10];
            for (int i = 0; i < img.length; i++) {
                BufferedImage im = new BufferedImage(150, 100, BufferedImage.TYPE_INT_RGB);
                Graphics2D g2d = im.createGraphics();
                g2d.setBackground(Color.WHITE);
                g2d.fillRect(0, 0, im.getWidth(), im.getHeight());
                g2d.setColor(Color.GRAY);
                g2d.fillRect(20, 30, 80, 60);
                g2d.fillPolygon(new int[]{0, 20, 100, 120}, new int[]{30, 10, 10, 30}, 4);
                g2d.setColor(Color.BLACK);
                g2d.setFont(Font.decode("Monospaced 40"));
                g2d.drawString(String.format("寺%d", i), 30, 70);
                img[i] = im;
            }
        }
    
        public int showPrevious() {
            m = (m <= 0) ? 9 : m - 1;
            repaint();
            return m;
        }
    
        public int showNext() {
            m = (m >= 9) ? 0 : m + 1;
            repaint();
            return m;
        }
    
        @Override
        public void paint(Graphics g) {
            g.drawImage(img[m], 0, 0, this);
        }
    }
    
[/code]


CC BY-SA 4.0
2020-11-14T03:25:16.453
71944
2020-11-14T03:25:16.453
9820
71930
answer