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

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

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

JFrameはJFC/Swingフレームワークのコンポーネントであり、トップレベルのコンテナです。

Java

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

コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

Q&A

解決済

1回答

2222閲覧

Java : JPanelでの背景画像が設定できない

退会済みユーザー

退会済みユーザー

総合スコア0

JFrame

JFrameはJFC/Swingフレームワークのコンポーネントであり、トップレベルのコンテナです。

Java

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

コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

0グッド

0クリップ

投稿2021/05/12 04:38

編集2021/05/12 04:56

Javaで、Jpanelの背景の画像を設定し、
マウスクリックで座標を取得するコードを作成していますが、
コンパイルで以下のエラーメッセージが発生しました。
(背景画像を設定するところができていないようです)

【発生している問題・エラーメッセージ】
panel.setBackgroundImage(image);
^
シンボル: メソッド setBackgroundImage(BufferedImage)
場所: クラス JPanel
エラー1個

該当のソースコード

import javax.swing.;
import java.awt.Point;
import java.awt.image.BufferedImage;
import java.awt.Color;
import java.awt.BorderLayout;
import java.awt.event.
;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

public class JPointTest extends JFrame implements MouseListener{

JLabel label;

public static void main(String[] args){
JPointTest frame = new JPointTest3();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setBounds(10, 10, 300, 200); frame.setTitle("タイトル"); frame.setVisible(true);

}

JPointTest(){
JPanel panel = new JPanel();
panel.addMouseListener(this);

BufferedImage image = null; try { image = ImageIO.read(new File("画像タイトル.jpg")); } catch (Exception e) {

e.printStackTrace();
image = null;
}
JPanel.setBackgroundImage(image);

label = new JLabel("座標値"); getContentPane().add(panel, BorderLayout.CENTER); getContentPane().add(label, BorderLayout.PAGE_END);

}

public void mouseClicked(MouseEvent e){
Point point = e.getPoint();
label.setText("x:" + point.x + ",y:" + point.y);
}

public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mousePressed(MouseEvent e){}
public void mouseReleased(MouseEvent e){}

}

java

試したこと

importコードが不足しているのか?と思い、調べて色々書き加えてみましたが解決できませんでした。

補足情報(FW/ツールのバージョンなど)

java初心者のため初歩的な問題かもしれませんが、どうぞよろしくおねがいいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

背景画像でないかもしれないけど、せっかく頑張ったオリジナルを生かして修正した場合、

JLabel label;の下に、BufferedImage image = null;を移動する。

main内の
JPointTest frame = new JPointTest3();はJPointTest frame = new JPointTest();に修正する。
(3を取る。)

問題のJPanel.setBackgroundImage(image);は削除する。

次に
getContentPane().add(label, BorderLayout.PAGE_END);
}の後ろに以下を加え、次のようにする。

  public void paint(Graphics g){
g.drawImage(image, 10, 10, this);
}

public void mouseClicked(MouseEvent e){

最後に、Graphicsをimportする。

プログラムを起動し、画面を最大化して任意の位置をクリックしたら、位置が表示されました。
思っているのと違うかもしれませんが。

投稿2021/05/12 06:15

senior_golfer

総合スコア267

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

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

退会済みユーザー

退会済みユーザー

2021/05/13 01:22

おっしゃっていただいた通り修正したところ、エラーが消えました! 当初の目的は画像の座標を検出することでしたので解決して良かったです。 本当にどうもありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問