ここから本文です

javaに関する質問です。コイン25枚。

アバター

ID非公開さん

2016/8/302:00:18

javaに関する質問です。コイン25枚。

JPanelの上に配置したボタンを押したら、図形が描かれるようにするにはどうしたら良いでしょうか?

jpanelを継承したクラスのmypanelを作成し、メソッドpaintComponentのオーバーライドで描画が出来ることは分かりました。

しかしボタンを押して、絵が描かれるようにするにはどうしたら良いでしょうか?
ボタンを押してイベントを受け取ったときの動作を、action performedメソッド内に記述するのは分かるのですが、そこで描画処理しようとしてもうまくいきません。

閲覧数:
46
回答数:
1
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

2016/8/306:24:16

[インスタンス].repaint()を呼び出せば大丈夫だと思います。
以下、サンプルです。

package test20160803;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Yahooq14162455889 {

public static void main(String[] args) {

class MyJPanel extends JPanel {

int count = 0;

@Override
protected void paintComponent(Graphics g) {

count ++;

g.setColor(Color.WHITE);
g.fillRect(0, 0, getWidth(), getHeight());

g.setColor(Color.BLACK);
if (count % 2 == 0) {
g.drawLine(0, 0, 10, 10);
} else {
g.drawLine(10, 0, 0, 10);
}
}

}

MyJPanel myJPanel = new MyJPanel();
JButton jButton = new JButton("ボタン");
jButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
myJPanel.repaint();
}
});

// フレーム表示
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("test");
frame.setSize(300, 300);
frame.setLayout(new GridLayout(2, 1, 10, 10));
frame.add(myJPanel);
frame.add(jButton);
frame.setVisible(true);

}

}

この回答は投票によってベストアンサーに選ばれました!

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる