質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Swing

SwingはJavaに標準で付属するグラフィック関連のクラスライブラリを指します。

Q&A

1回答

2143閲覧

ボタンを押して画面内に文字を表示させるには

beginner11111

総合スコア1

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Swing

SwingはJavaに標準で付属するグラフィック関連のクラスライブラリを指します。

0グッド

0クリップ

投稿2020/11/13 11:15

前提・実現したいこと

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

### 該当のソースコード ```java java

import java.awt.;
import java.awt.event.
;
import java.applet.AudioClip;
import javax.swing.JApplet;

public class Project2020_2a extends Frame {

/*  ここは、プログラムのどこからでも使いたい 変数などを宣言しておくフィールドです。  変数や、オブジェクトの入れものを用意しています。 */ // マウスのx座標の記録用変数 Mx, y座標の記録用変数 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; // // 描画する画像番号を指定するための変数です(ドラッグ動作ごとに0~9を循環させます)。 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("寺や神社"); // 自分自身(this) を、どこからでも呼び出せるように myFrame に代入しておきます。 myFrame = this; // // このアプリケーションが持つ描画面を受け取り、gという名前で呼び出せるようにします。 g = myFrame.getGraphics(); // // Graphics2Dの機能を使う場合は、g2として呼び出せるようにします。 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("<消去ボタン>"); // 画面にボタンを貼り付けます。2コ以上作成すると順番に左から並びます。 this.setLayout(new BorderLayout()); this.add(bt1, BorderLayout.NORTH); // ボタンbt1に リスナー(ボタンの場合はアクションリスナー)を貼り付けます。 bt1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { // ボタンを押した際に、画面を消して、paintメソッドを呼んでいます。 // これにより最初の画面を再描画しています。 repaint(); // 0番の音を再生させています。 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; //⑩ 描画用部品gに文字列を書き込む ()内に,文字列,x座標,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); } }

}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TN8001

2020/11/14 16:36

コードが読みづらいので質問を編集して、ちゃんとコードブロックに入れてください。
guest

回答1

0

Java - ウィンドウにあらかじめ表示する画像と、ドラックすると表示される画像|teratail
これは解決したのですか?

↑とも関連するのですが、提示コードではまだArrayIndexOutOfBoundsExceptionが出ます。
提示コードは手元のコードとは別で、編集ミスかなんでしょうか?

画像の右側に寺についの紹介文を表示させたいです。
if文を使うのかな?とは思ったのですが、if文の中身をどのように書いたら良いのかまったくわかりません。

if文の使い方はわかっているんですね?
そういう情報が提示コードから読み取れないので、間違っていてもいいのでやってみたことを書いてください。

int mが画像番号ですから、if文なりswitch文なりで場合分けすればいいんじゃないでしょうか。

if文以外の方法もありましたら、教えてください。

単純に説明文付きの画像を作ったらいいんじゃないでしょうか。

投稿2020/11/14 16:38

TN8001

総合スコア9321

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問