前提・実現したいこと
お絵描きプログラムで色変更と一括削除をできるようにしたいです。
該当のソースコード
ファイル1
java
1package freetask2; 2 3import java.awt.*; 4import java.awt.event.*; 5 6public class Draw extends Frame{ 7 int x,y,cx,cy; 8 /*public static void main(String[] args){ 9 Draw ft = new Draw(); 10 }*/ 11 Color cuurentColor = Color.black; 12 13 public Draw(){ 14 super("ペイント"); 15 addWindowListener(new SampleWindowListener()); 16 addMouseListener(new SampleMouseAdapter()); 17 addMouseMotionListener(new SampleMouseAdapter()); 18 //setSize(500,500); 19 //setVisible(true); 20 } 21 22 public void setColor(Color newColor){ 23 currrentColor = new Color; 24 } 25 26 class SampleWindowListener extends WindowAdapter{ 27 public void windowClosing(WindowEvent e){ 28 System.exit(0); 29 } 30 } 31 32 class SampleMouseAdapter extends MouseAdapter{ 33 public void mousePressed(MouseEvent e){ 34 x = e.getX(); 35 y = e.getY(); 36 } 37 public void mouseDragged(MouseEvent e){ 38 Graphics g = getGraphics(); 39 cx = e.getX(); 40 cy = e.getY(); 41 g.setColor(currentColor); 42 g.drawLine(x,y,cx,cy); 43 x = cx; 44 y = cy; 45 } 46 } 47} 48
ファイル2
java
1package freetask2; 2 3import java.awt.*; 4import java.awt.event.*; 5 6public class Draw2 extends Draw{ 7 private Button Whitebt,Blackbt,Redbt,Bluebt,Greenbt,Clearbt; 8 Draw drawarea; 9 public static void main(String[] args){ 10 Draw2 ft = new Draw2(); 11 } 12 13 Draw2(){ 14 setSize(500,500); 15 16 drawarea = new Draw(); 17 18 Whitebt = new Button("White"); 19 add(Whitebt); 20 Whitebt.addActionListener(new SampleActionListener()); 21 Blackbt = new Button("Black"); 22 add(Blackbt); 23 Blackbt.addActionListener(new SampleActionListener()); 24 Redbt = new Button("Red"); 25 add(Redbt); 26 Redbt.addActionListener(new SampleActionListener()); 27 Bluebt = new Button("Blue"); 28 add(Bluebt); 29 Bluebt.addActionListener(new SampleActionListener()); 30 Greenbt = new Button("Green"); 31 add(Greenbt); 32 Greenbt.addActionListener(new SampleActionListener()); 33 Clearbt = new Button("Clear"); 34 add(Clearbt); 35 Clearbt.addActionListener(new SampleActionListener()); 36 37 Panel pan = new Panel(); 38 pan.setLayout(new GridLayout(1,6)); 39 pan.add(Whitebt); 40 pan.add(Blackbt); 41 pan.add(Redbt); 42 pan.add(Bluebt); 43 pan.add(Greenbt); 44 pan.add(Clearbt); 45 46 add("North",pan); 47 setVisible(true); 48 } 49 50 class SampleActionListener implements ActionListener{ 51 public void actionPerformed(ActionEvent e){ 52 if(e.getSource()==Whitebt){ 53 drawarea.setColor(Color.white); 54 }else if(e.getSource()==Blackbt){ 55 drawarea.setColor(Color.black); 56 }else if(e.getSource()==Redbt){ 57 drawarea.setColor(Color.red); 58 }else if(e.getSource()==Bluebt){ 59 drawarea.setColor(Color.blue); 60 }else if(e.getSource()==Greenbt){ 61 drawarea.setColor(Color.green); 62 }else if(e.getSource()==Clearbt){ 63 Graphics g = getGraphics(); 64 drawarea.setColor(Color.white); 65 g.fillRect(0,0,getSize().width,getSize().height); 66 drawarea.setColor(Color.black); 67 repaint(); 68 } 69 } 70 } 71}
試したこと
実行して絵を描くことはできるのですが色変更と一括削除ができません。一括削除(Clear)に関してはボタンクリックでで削除されるのですがrepaint()に反応しているだけのように思えます。特にエラーも出ていないためどこが間違っているのかもわかりません。どこをどう直せばよいかを教えていただけると助かります。よろしくお願いします。
補足情報(FW/ツールのバージョンなど)
VSCode
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/24 09:10
2021/01/24 09:35
2021/01/24 09:54
2021/01/24 10:21
2021/01/24 14:24