• 締切済み

ペイントソフトでキャンバス内にだけにかけるようにしたいです。

どうしたらいいのかわからいので、何かヒントでiいので教えてください。 import java.applet.*; import java.awt.*; import java.awt.event.*; /* <APPLET CODE ="Mous" WIDTH = 500 HEIGHT = 300> </APPLET> */ public class Mous extends Applet { Graphics g; int point_x, point_y; Button color_black,color_red,color_blue,clear; public void init() { g = getGraphics(); setLayout(null); addMouseListener(new MouseAdapter () { public void mousePressed(MouseEvent e){ point_x = e.getX(); point_y = e.getY(); } }); addMouseMotionListener(new MouseMotionAdapter() { public void mouseDragged(MouseEvent e) { g.drawLine(point_x,point_y,e.getX(),e.getY()); point_x = e.getX(); point_y = e.getY(); } }); color_black = new Button("黒"); color_black.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { g.setColor(Color.black); } }); color_red = new Button("赤"); color_red.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { g.setColor(Color.red); } }); color_blue = new Button("青"); color_blue.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { g.setColor(Color.blue); } }); clear = new Button("クリアー"); clear.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { g.clearRect(0,0,500,300); } }); add(color_black); add(color_red); add(color_blue); add(clear); } }

  • Java
  • 回答数1
  • ありがとう数2

みんなの回答

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

問題は「マウスのイベントをアプレットが受け取って線の描画をしている」ことにある。 解決方法としては、PanelなどをアプレットにAddしてやって、Panelに対してイベントリスナの登録をしてあげれば良いのではないかな。 つまり、アプレットが土台で、その中にボタン4つとパネル1つがあり、パネルが君の言うところのキャンバスになるわけだ。

関連するQ&A

  • ボタンの複数割り当てについて

    public class TestButton extends Applet implements ActionListener {      Button bt1,bt2,bt3;      public void init()      {           bt1 = new Button("red");           add(bt1);           bt2 = new Button("blue");           add(bt2);           bt3 = new Button("yellow");           add(bt3);           bt1.addActionListener(this);       } java初心者です。アプレットで上のようにボタンを作ります。それぞれが押された時に、red,blue,yellowが表示されるようにしたいのです。ActionListenerをインプリメントしているので、      public void actionPerformed(ActionEvent ae) をオーバーライドする必要がありますが、そこで質問です。 ボタンを3種類別々に関連づけるには、actionPerformed内をどのように記述したらよいでしょうか?また、init内はこれだけでいいんでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • 画面のちらつきの原因が知りたいです

    JAVAの初心者です、宜しくお願いします。 下のようなプログラムを書きました。 「public void paint(Graphics g){ ~ repaint();」とすると、画像がちらつきます、しかし、「repaint();」を消すとちらつかなくなります、この原因が分かりません。 一体何故このような現象が起こるのでしょうか、宜しくお願いします。 ========================================================== import java.applet.Applet; import java.awt.Button; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; public class Oval_Rec_1_071128 extends Applet implements MouseListener , ActionListener { int x1 ; int y1 ; int xh = 50 ; int yv = 50 ; Button bt1 ; Button bt2 ; public void actionPerformed(ActionEvent ae){} public void mouseClicked(MouseEvent e){} public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} public void mouseReleased(MouseEvent e){} public void init() { setBackground(Color.yellow); addMouseListener(this); bt1 = new Button("push"); bt1.setFont(new Font("SansSerif", Font.BOLD, 20)); bt1.setBackground(Color.black); bt1.setForeground(Color.lightGray); add(bt1); bt1.addActionListener(this); bt2 = new Button("change_circle"); add(bt2); bt2.addActionListener(this); } public void mousePressed(MouseEvent e) { x1 = e.getX(); y1 = e.getY(); xh = e.getX(); yv = e.getY(); // repaint(); //comment out } public void paint(Graphics g) { g.setColor(Color.red); g.setFont(new Font("Serif",Font.BOLD,24)); g.drawString("Hello Applet World ! !" , 50 , 50); g.setColor(Color.blue); g.drawLine( 100 , 100 , 500 , 500); g.setColor(Color.cyan); g.fillOval( x1 , y1 , xh , yv); g.setColor(Color.magenta); g.fillRect( xh , yv, x1/10 , y1/10 ); repaint(); } }

    • ベストアンサー
    • Java
  • ActionListener について

    JFrame の上に JPanel があり、JPanel の上に JButton があるとします。 JButton が押されたことを JFrame に知らせるにはどうしたらいいでしょうか。 わかるところまで書いてみました。 class MyFrame extends JFrame implements ActionListener { MyPanel myPanel = new MyPanel(); MyFrame() { myPanel.addActionListener(this); add(myPanel); } public void actionPerformed(ActionEvent e) { System.out.println("The button on the MyPanel was pressed!"); } public static void main(String[] args) { new MyFrame(); } } class MyPanel extends JPanel implements ActionListener { JButton button1 = new JButton(); MyPanel() { button1.addActionListener(this); add(button1); } public void actionPerformed(ActionEvent e) { } }

    • ベストアンサー
    • Java
  • アプレットを再描画させたい

    アプレットを作りましたが、ウィンドウの大きさを変えた時にも描いたオブジェクトをrepaintを使って再描画させるのは どのようにすればよいのでしょうか。 _______________________________ public class QQ_Oekaki extends Applet implements ActionListener { Graphics g; Color col; int w; int h; Button btnBlue; Button btnYellow; public void init() { g = getGraphics(); btnBlue = new Button("Blue"); this.add(btnBlue); btnBlue.addActionListener(this); btnBlue.setFont(new Font("SansSerif", Font.ITALIC, 10)); btnBlue.setForeground(Color.blue); btnYellow = new Button("Yellow"); this.add(btnYellow); btnYellow.addActionListener(this); btnYellow.setFont(new Font("SansSerif", Font.ITALIC, 10)); btnYellow.setForeground(Color.yellow); this.addMouseMotionListener ( new MouseMotionAdapter() { public void mouseDragged(MouseEvent e) { int x = e.getX(); int y = e.getY(); g.setColor(Color.green); g.setColor(col); g.fillRect(x,y,5,5); } } ); } public void actionPerformed(ActionEvent ae) { if (ae.getActionCommand()=="Yellow") { col = Color.yellow; } if (ae.getActionCommand()=="Blue") { col = Color.BLUE; } } }

  • JAVAのプログラミングについて

    色変更というボタンを押すたびに、正方形の中の色が緑から青、青から緑というように繰り返し色が変わるプログラムを作りたいのですが、途中までは、完成できたのですが、ここからどうすればいいかわかりません。教えてください。 import java.awt.*; import java.applet.*; import java.awt.event.*; public class kadai3Applet extends Applet implements ActionListener { int i = 1; Button collor; public void init(){ collor = new Button("色変更"); collor.addActionListener(this); add(collor); } public void paint(Graphics g){ g.setColor(Color.green); g.fillRect(50,50,50,50); } public void actionPerformed(ActionEvent e){ if(e.getSource() == collor){ } repaint(); } }

  • main()メソッドが無いコード

    最近、Javaアプレット等を勉強してるのですが 今まではmain()メソッドの中に処理を書いて来たのですが、 下記の様なコードにはmain()メソッドが有りません。 import java.applet.Applet; import java.awt.Button; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class Sample6 extends Applet implements ActionListener { Button bt; public void init() { bt = new Button("開始"); add(bt); bt.addActionListener(this); } public void actionPerformed(ActionEvent ae) { bt.setLabel("中止"); } } これはどう言う事なんでしょうか?

    • ベストアンサー
    • Java
  • jcpad

    『長方形をあらかじめ置き、、縮小、拡大のボタンを押すことで  縦横を1/1.05倍に縮小できるようにする』 という問題が教科書にあり、拡大、縮小ボタンを作るまではできたのですがそれ以降がうまく考えることができません。 //<applet code= "Counter3.class" width=300 height=150></applet> import java.awt.*; import java.applet.*; import java.awt.event.*; public class Counter3 extends Applet implements ActionListener { Font font; Button kakudaiButton, syukushoButton; public void init() { font = new Font("Serif", Font.BOLD, 72); kakudaiButton = new Button("拡大"); kakudaiButton.addActionListener(this); add(kakudaiButton); syukushoButton = new Button("縮小"); syukushoButton.addActionListener(this); add(syukushoButton); } public void paint(Graphics g) { g.drawOval(); } public void actionPerformed(ActionEvent e) { if (e.getSource() == kakudaiButton) { ; } else if (e.getSource() == syukushoButton) { ; } repaint(); } }

  • アプレットのクラス移動

    アプレットにてボタンを押した際に他のクラスのアプレットを上書きしたいのですが、何が足りないのかわかりません。ご指導お願いします。 button.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent f){ remove(button); repaint(); Tenbiki.Tenbiki();     validate(); } });

  • コンパイルエラーの対応

    下記のプログラムをコンパイルしたらエラーが発生しました。 プログラム自体は本をそのまま書き写したのですが、何がいけないのでしょう。 教えてください。よろしくお願いします。 Javaのバージョンは1.3.1です import java.applet.*; import java.awt.*; import java.awt.event.*; public class sample3 extends Applet implements ActionListener { Button bt; public void init() { bt = new Button("押します!"); bt.addActionListener(this); add(bt); } public void actionperformed(ActionEvent ae) { bt.setLabel("押しました!"); } } -----------------エラー内容----------------------- sample3.java:4: sample3 は abstract として宣言する必要があります。 actionPerformed(java.awt.event.ActionEvent) を sample3 で定義しません。 public class sample3 extends Applet implements ActionListener ^

    • ベストアンサー
    • Java
  • Javaアプレットについてですが

    Javaアプレットでボタンを押したら数字が増えるものを作っているのですがどうもうまく動きません。 ソースは下の通りです。 変更しなければいけないところがあるならお願いします。 import java.applet.Applet; import java.awt.Graphics; import java.awt.Button; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class Sample7 extends Applet implements Runnable, ActionListener { Button bt; int num; public void init() { bt = new Button("開始"); add(bt); bt.addActionListener(this); Thread th; th = new Thread(this); th.start(); } public void actionPerformed(ActionEvent ae) { public void run() { try{ for(int i=0; i<11; i++){ num = i; repaint(); Thread.sleep(1000); } } catch(InterruptedException e){} } } public void paint(Graphics g) { String str = num + "です。"; g.drawString(str, 50, 50); } }

    • ベストアンサー
    • Java

専門家に質問してみよう