Javaでお絵描きソフトを作りたいのですが、色の変更ができなくて困っています。
ボタンの配置、黒のみでの描画はできたのですが、ボタンを押しても色が変更されません。
ソースコードはこれです。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.applet.*;
public class Report15 extends JPanel{
JButton[] button;
Graphics g;
public static void main(String[] args) {
Report15 gui=new Report15();
gui.go();
}
public void go(){
g =getGraphics();
JFrame frame = new JFrame("お絵描き");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel=new JPanel();
button=new JButton[8];
button[0]=new JButton("Black");
button[1]=new JButton("Red");
button[2]=new JButton("Orange");
button[3]=new JButton("Yellow");
button[4]=new JButton("Green");
button[5]=new JButton("Blue");
button[6]=new JButton("Erase");
button[7]=new JButton("Clear");
MyDrawPanel drawPanel=new MyDrawPanel();
for(int i=0;i<8;i++){
button[i].addActionListener(drawPanel);
}
panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS));
for(int i=0;i<8;i++){
panel.add(button[i]);
}
frame.getContentPane().add(BorderLayout.CENTER,drawPanel);
frame.getContentPane().add(BorderLayout.EAST,panel);
frame.setSize(400,300);
frame.setLocation(300,200);
frame.setVisible(true);
}
int x0,y0,x,y;
public Report15(){
setBackground(Color.white);
setForeground(Color.black);
}
class MyDrawPanel extends JPanel implements ActionListener{
public MyDrawPanel(){
addMouseListener(new MouseListener());
addMouseMotionListener(new MouseMotionListener());
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==button[0]){
g.setColor(Color.black);
repaint();
}else if(e.getSource()==button[1]){
g.setColor(Color.red);
}else if(e.getSource()==button[2]){
g.setColor(Color.orange);
}else if(e.getSource()==button[3]){
g.setColor(Color.yellow);
}else if(e.getSource()==button[4]){
g.setColor(Color.green);
}else if(e.getSource()==button[5]){
g.setColor(Color.blue);
}else if(e.getSource()==button[6]){
g.setColor(Color.white);
}else if(e.getSource()==button[7]){
repaint();
}
}
// マウスを押し下げたとき
public class MouseListener extends MouseAdapter{
public void mousePressed(MouseEvent e) {
x0=x=e.getX();
y0=y=e.getY();
}
}
public class MouseMotionListener extends MouseMotionAdapter{
public void mouseDragged(MouseEvent e){
x=e.getX();
y=e.getY();
lineDraw(getGraphics());
x0=e.getX();
y0=e.getY();
}
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
}
public void lineDraw(Graphics g){
g.drawLine(x0,y0,x,y);
}
}
}
色々調べてやってみたのですが、全然できません…
Javaがあまり得意ではないので、できるだけ細かくおしえて頂けると嬉しいです。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javaで文字数制限するには?
-
ボールが勝手に動き困ってます。
-
ボタンクリック後パネルを再描...
-
エラーで式の開始が不正ですと...
-
Java-Swing TextAreaにスクロー...
-
JavaでのSwingを使った簡易電卓...
-
【Swing】JPanel クラス外から...
-
javaGUIインスタント変数とロー...
-
JPanelの切り替えと再描画
-
java junit list同士の比較方法
-
ORA-01858: 数値を指定する箇所...
-
C言語のポインターに関する警告
-
javaです。 途中まで出来ている...
-
変数を動的に利用するには?
-
eclipseに記述したjavaファイル...
-
System.err. printlnとSystem.o...
-
javaで質問です。 文字列2023/2...
-
ダブルクォーテーションを含む...
-
Path型をString型へ変換する(Java)
-
System.out.printlnの出力先
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
java junit list同士の比較方法
-
JPanelの切り替えと再描画
-
javaで文字数制限するには?
-
TextAreaでの文字の色
-
Java JPanelを使ったコードにつ...
-
java 一意の値を取り出す方法
-
JPanelの重ね方/OverlayLayout他
-
Java-Swing TextAreaにスクロー...
-
JDialogを閉じた時の処理
-
4択クイズでのランダム出題の...
-
【Swing】JPanel クラス外から...
-
最後の行に移動するには?
-
エラーで式の開始が不正ですと...
-
’じゃんけん’をするプログラム...
-
JTable の 列幅を個別に設定す...
-
ArrayListの使い方について(初...
-
次のように書いたのですが、ウ...
-
TABキーの検出
-
JTableの列ヘッダ
-
c言語のプログラミングで1から1...
おすすめ情報