互換性のない型

このQ&Aのポイント
  • プログラムに互換性のない型のエラーが発生しています。
  • コンパイルエラーメッセージは、java.awt.Pointと期待された型Pointの互換性のない型であることを指しています。
  • このエラーを解決するためには、java.awtパッケージのPointクラスを使用する必要があります。
回答を見る
  • ベストアンサー

互換性のない型?

以下のようなプログラムを書いたのですが…。 import java.applet.*; import java.awt.*; import java.awt.event.*; public class okweb extends Applet implements MouseMotionListener{ boolean enter = false; Rectangle r1; Point p1; public void init(){ addMouseMotionListener(this); r1 = getBounds(); } public void paint(Graphics g){ if(p1 != null){ if(enter){ g.drawLine(0, p1.y, r1.width, p1.y); g.drawLine(p1.x ,0, p1.x, r1.height); g.drawString("("+p1.x+", "+p1.y+")", p1.x+10, p1.y-10); } } } public void mouseMoved(MouseEvent e){ enter = r1.contains(e.getPoint()); p1 = e.getPoint(); repaint(); } public void mouseDragged(MouseEvent e){}; } これでコンパイルすると、 okweb.java:29: 互換性のない型 検出値:java.awt.Point 期待値:Point p1 = e.getPoint(); と出るんです。 どうすればいいのでしょうか?

  • track
  • お礼率95% (525/548)
  • Java
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • UKY
  • ベストアンサー率50% (604/1207)
回答No.1

自作の Point というクラスがあるために、java.awt.Point クラスが使えなくなっていると思われます。 自作 Point クラスを消すなり変名するなりすればいいでしょう。

track
質問者

お礼

ありがとうございます。 なるほど…、そういうことが起こるんですか…。 入門書にそのようなことは書かれていなかったと思います。 勉強になりました。

関連するQ&A

  • 長方形をドラッグするJavaアップレット

    Javaアップレットについてです。長方形の内部でドラッグすることで、長方形を移動できるプログラ厶を作りたいのですが、うまくいきません。どうしても分からないので、改善点がありましたらアドバイスをお願いします。 詳しい仕様は、 ・長方形の内部でマウスボタンを押し、マウスボタンを押したままマウスを移動すると、移動した量だけ長方形を移動して表示する。 ・マウスボタンを離すと、その位置に長方形を描く。 ・長方形を持ち上げている感じを出すために、マウスボタンを押したときとドラッグ中は、長方形を正確な位置から少しずらして表示し、その下に影を描く。 です。 プログラ厶は以下のとおり import java.awt.*; import java.applet.*; import java.awt.event.*; public class ex1118 extends Applet implements MouseListener, MouseMotionListener{ //長方形の最初の位置 Rectangle r1 = new Rectangle(80,100,80,60); //マウスボタンを押した位置 Point p1; //マウスボタンを離した位置 Point p2; //長方形の内部にあるかどうか boolean enter = false; public void init(){ addMouseListener(this); addMouseMotionListener(this); } public void paint(Graphics g){ g.fillRect(r1.x, r1.y, r1.width, r1.height); if(enter){ //影をつける g.setColor(Color.gray); g.fillRect(p1.x, p1.y, r1.width, r1.height); //少しずらす g.setColor(Color.black); g.fillRect(p1.x - 10, p1.y - 10, r1.width, r1.height); } else if(!enter){ r1.x = r1.x + (p2.x - p1.x); r1.y = r1.y + (p2.y - p1.y); g.fillRect(r1.x, r1.y, r1.width, r1.height); } } public void mousePressed(MouseEvent e){ enter = r1.contains(e.getPoint()); if(enter) p1 = e.getPoint(); p2 = null; repaint(); } public void mouseDragged(MouseEvent e){ if(enter) p2 = e.getPoint(); repaint(); } public void mouseReleased(MouseEvent e){ enter = false; p2 = e.getPoint(); repaint(); } public void mouseClicked(MouseEvent e){} public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} public void mouseMoved(MouseEvent e){} }

    • ベストアンサー
    • Java
  • マウスイベント処理

    描いた図形(今の場合は長方形)をドラッグして移動させるプログラムを作りたいのですが、うまくいきません… アドバイスどうかよろしくお願いします。 あと、どうすればマウスイベントを使ったプログラム作成が苦手じゃなくなるのでしょうか。 重ねてアドバイスお願い致します。 以下が私が作ったプログラムです。 import java.awt.*; import java.applet.*; import java.awt.event.*; public class RectMove extends Applet implements MouseListener, MouseMotionListener{ Rectangle r1 = new Rectangle(10, 10, 50, 40); Point p1,p2; public void init(){ addMouseListener(this); addMouseMotionListener(this); } public void paint(Graphics g){ g.drawRect(r1.x, r1.y, r1.width, r1.height); } public void mousePressed(MouseEvent e){ p1 = e.getPoint(); if(!r1.contains(p1)) p1 = null; } public void mouseReleased(MouseEvent e){ if(p1 != null){ p2 = e.getPoint(); r1.translate((p2.x - p1.x), (p2.y - p1.y)); p1 = null; repaint(); } } public void mouseClicked(MouseEvent e){ p1 = null; repaint(); } public void mouseDragged(MouseEvent e){ if(p1 != null){ p2 = e.getPoint(); r1.translate((p2.x - p1.x), (p2.y - p1.x)); p1.setLocation(p2); repaint(); } } public void mouseMoved(MouseEvent e){} public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} }

    • ベストアンサー
    • Java
  • 長方形を描いて、それを移動させるアップレット

    Javaアップレットについて質問です。マウスをドラッグすると、マウスによって指定した位置に長方形を描き、Shiftキーを押したまま描かれた長方形の内部でドラッグすると、マウスを移動した距離だけ長方形を移動させる、というプログラムを作りたいのですが Shiftキーを押したまま長方形の内部でドラッグすると、描いた長方形が消えてしまいます。 どうしていいかわからないので、改善点がありましたら教えてください。 なお、最初に長方形を描くところはできています。 プログラムは以下のとおり import java.awt.*; import java.applet.*; import java.awt.event.*; public class ex1123 extends Applet implements MouseListener, MouseMotionListener{ //Shiftキーを押しているかどうか boolean isS = false; //マウスが長方形の内部に入っているかどうか boolean enter = false; //長方形 Rectangle r1 = new Rectangle(0,0,0,0); //Shiftキーを押したまま、マウスを押した位置と離した位置 Point p1; Point p2; public void init(){ addMouseListener(this); addMouseMotionListener(this); } public void paint(Graphics g){ if(!r1.isEmpty()){ if(isS){ //マウスが長方形の内部にはいっていたら移動させる if(enter){ //長方形の始点を移動させる r1.x = r1.x + (p2.x - p1.x); r1.y = r1.y + (p2.y - p1.y); g.drawRect(r1.x, r1.y, r1.width, r1.height); } } else{ g.drawRect(r1.x, r1.y, r1.width, r1.height); } } } public void mousePressed(MouseEvent e){ r1.setLocation(e.getPoint()); r1.setSize(0,0); if((e.getModifiersEx() & MouseEvent.SHIFT_DOWN_MASK) == MouseEvent.SHIFT_DOWN_MASK){ isS = true; //マウスが長方形の内部に入っているかどうか enter = r1.contains(e.getPoint()); if(enter){ //p1はマウスを押した位置, p2はnull p1 = e.getPoint(); p2 = null; } } else{ isS = false; } repaint(); } public void mouseDragged(MouseEvent e){ //マウスの位置 1if(enter) p2 = e.getPoint(); //最初に描く長方形のサイズを決める r1.setSize(Math.abs(e.getX() - r1.x), Math.abs(e.getY() - r1.y)); repaint(); } public void mouseReleased(MouseEvent e){ //マウスを離す位置を指定 if(enter) p2 = e.getPoint(); //最初に描く長方形のサイズを決める r1.setSize(Math.abs(e.getX() - r1.x), Math.abs(e.getY() - r1.y)); repaint(); } public void mouseClicked(MouseEvent e){} public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} public void mouseMoved(MouseEvent e){} }

    • ベストアンサー
    • Java
  • マウスのイベントが働かない。

    javaを学習している者です。外枠の中がクリックされたら分かるようにマウスのイベントを実装したく、以下のように実装したのですが、どうやらクリックしたのに対して応答(System.out.println("clicked");)しないのですが、どこか間違っているでしょうか? よろしくお願いします。 import java.awt.Color; import java.awt.Graphics; import java.awt.Point; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JPanel; public class MainPanel extends JPanel implements MouseListener{ int masu = 40;//マスの一辺の長さ int hajimex = 50;//マスの始まりの左端の座標 int hajimey = 35; int masuflag[][] = new int[9][9]; public MainPanel(){ super(); setLayout(null); System.out.println("hajimeri"); } public void paintComponent(Graphics g){ g.setColor(Color.black); //******マス達を描く******** //まずは縦線 for(int i = 0; i < 10; i++){ g.drawLine(hajimex+i*masu,hajimey,hajimex+i*masu,hajimey+masu*9); } //そして横線 for(int i = 0; i < 10; i++){ g.drawLine(hajimex,hajimey+i*masu,hajimex+masu*9,hajimey+i*masu); } //太線(縦) g.drawLine(hajimex+3*masu-1,hajimey,hajimex+3*masu-1,hajimey+masu*9); g.drawLine(hajimex+6*masu-1,hajimey,hajimex+6*masu-1,hajimey+masu*9); //太線(横) g.drawLine(hajimex,hajimey+3*masu-1,hajimex+masu*9,hajimey+3*masu-1); g.drawLine(hajimex,hajimey+6*masu-1,hajimex+masu*9,hajimey+6*masu-1); } public void mouseClicked(MouseEvent e){ Point point = e.getPoint(); //クリックされた場所の判定 if(point.x > hajimex && point.x < hajimex+masu*9){ if(point.y > hajimey && point.y < hajimey+masu*9){ //外枠より内側だった場合 System.out.println("clicked"); } } } public void mousePressed(MouseEvent arg0) { } public void mouseReleased(MouseEvent arg0) { } public void mouseEntered(MouseEvent arg0) { } public void mouseExited(MouseEvent arg0) { } }

    • ベストアンサー
    • Java
  • java リアルタイムでマウスの座標を取得したい

    マウスのリアルタイム座標を取得したいのですが、 以下のソースを作りました。 しかし、リアルタイムどころか、マウスをクリックしても座標が取得できません どこを修正すればいいのでしょうか? import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.awt.event.MouseEvent; import java.net.URL; import java.awt.Image; /*<applet code="applet001" width="640" height="480"></applet>*/ public class applet001 extends Applet implements MouseListener, MouseMotionListener { Dimension dim; int mouse_x, mouse_y; //アプレットの初期化時呼び出される public void init() { dim = getSize(); addMouseListener( this ); } public void update(Graphics g) //オーバーライドして最低限のことだけをする { paint(g); } public void paint(Graphics g) { g.drawString( "マウス:" + mouse_x + "," + mouse_y, 60, 120 ); g.fillOval(mouse_x,mouse_y,30,30); } // マウスの処理 public void mousePressed( MouseEvent e ) { mouse_x = e.getX(); mouse_y = e.getY(); } public void mouseClicked( MouseEvent e ) {} public void mouseReleased( MouseEvent e ) {} public void mouseEntered( MouseEvent e ) {} public void mouseDragged( MouseEvent e ) {} // public void mouseExited( MouseEvent e ) {} // public void mouseMoved( MouseEvent e ) { mouse_x = e.getX(); mouse_y = e.getY(); repaint(); } }

    • ベストアンサー
    • Java
  • アプレットでマウスイベントが出ない

    クリックしても反応しません。 また、マウスイベントが発生したときに飛ぶメソッドにSystem.out.printlnを入れるとException in thread "AWT-EventQueue-0" java.lang.NullPointerException: component argument pDataが出ることがあります。 import java.applet.Applet; import java.awt.Graphics; import java.awt.event.MouseListener; import java.awt.event.MouseEvent; public class NewJApplet extends javax.swing.JApplet implements MouseListener{ int x = 10; int y = 10; public void init() { x = 50; y = 50; } public void mouseClicked(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mousePressed( MouseEvent e ){ x = e.getX(); // マウスがクリックされた位置のx座標を取得する y = e.getY(); // マウスがクリックされた位置のy座標を取得する repaint(); // アプレットの再描画を指示する } public void mouseReleased(MouseEvent e) { } public void paint(Graphics g) { g.fillOval(x,y,10,10); } } 使ってるのは jre1.6.0_01 NetBeans 5.5です

    • ベストアンサー
    • Java
  • Javaのアプレットについて質問です。

    星型の図形をアプレットビューワ上でマウスを押した場所に移動させたいのですが・・・ import java.applet.Applet; import java.awt.Graphics; import java.awt.Color; import java.awt.Font; import java.awt.event.MouseListener; import java.awt.event.MouseEvent; import java.awt.Polygon; public class Enshu1_5 extends Applet implements MouseListener { int px []={100,80,10,70,40,100,160,130,190,120}; int py []={10,75,75,113,190,140,190,113,75,75}; private Polygon poly = new Polygon(px,py,10 ); public void init() { addMouseListener(this); } public void mouseClicked(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } public void paint(Graphics g) { g.setColor(Color.red); g.fillPolygon(poly); g.setFont(new Font("serif",Font.BOLD,24)); g.drawString("Star",100,200); } } こんな感じでつくってみたのですが現在位置とクリック位置との差分割り出し方をpublic void mouseClicked(MouseEvent e)の所に書きたいのですが普通にpoly.translate( e.getX(), e.getY() );をしてしまうと原点からの移動になってしまうため、フィールド上にint x=0,y=0をつくりmouseClickedのところで if(e.getX()>x&&e.getY()>y) { int dx=e.getX()-x; int dy=e.getY()-y; x=dx; y=dy; poly.translate(dx,dy); repaint(); }の様な感じで考えられる条件を条件分岐していこうと思ったのですがどうもうまくいきませんしかなりかさばったものになってしまうと思います。何かいい方法はないでしょうか? 教えて下さい><

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

    どうしたらいいのかわからいので、何かヒントで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); } }

  • コンポーネントの再描画

    下記のサンプルソースに示したように、レイアウトマネジャーがnullの場合には マウスドラッグでコンポーネントが再描画され、コンポーネントを移動可能なのですが、 スプリングレイアウトマネジャーを設定した同様なサンプルでは、再描画が 行われなくなります(移動はしていますが再描画されないため移動が見えません)。 スプリングレイアウトマネジャーを設定した場合には、フレームをリサイズすれば 再描画されるのですが(サンプルコード中のコメントをはずす)、repaint()等では うまくいきません。 解決策をご存知の方がおられましたら、よろしくお願い申し上げます。 import java.awt.Component; import java.awt.Point; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.SpringLayout; public class MouseDraggeSample { private static class NullLayoutSample extends JFrame { public NullLayoutSample() { setLayout( null ); JButton button = new JButton("Button"); button.setSize( 80, 30 ); button.setLocation( 100, 50 ); add( button ); DraggedMouseListener listener = new DraggedMouseListener(); button.addMouseListener( listener ); button.addMouseMotionListener( listener ); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize( 300, 200 ); setVisible( true ); } private class DraggedMouseListener implements MouseListener, MouseMotionListener { private Point p0; public void mousePressed(MouseEvent e) { p0 = e.getPoint(); } public void mouseDragged(MouseEvent e) { Component c = (Component)e.getSource(); c.setLocation( c.getX() + e.getX() - p0.x, c.getY() + e.getY() - p0.y ); } public void mouseClicked(MouseEvent e) {} public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} public void mouseMoved(MouseEvent e) {} } } private static class SpringLayoutSample extends JFrame { public SpringLayoutSample() { SpringLayout springLayout = new SpringLayout(); setLayout( springLayout ); JButton button = new JButton("Button"); button.setSize( 80, 30 ); springLayout.putConstraint( SpringLayout.WEST, button, 100, SpringLayout.WEST, this ); springLayout.putConstraint( SpringLayout.NORTH, button, 50, SpringLayout.NORTH, this ); add( button ); DraggedMouseListener listener = new DraggedMouseListener(); button.addMouseListener( listener ); button.addMouseMotionListener( listener ); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocation( 300, 0 ); setSize( 300, 200 ); setVisible( true ); } private class DraggedMouseListener implements MouseListener, MouseMotionListener { private Point p0; public void mousePressed(MouseEvent e) { p0 = e.getPoint(); } public void mouseDragged(MouseEvent e) { Component c = (Component)e.getSource(); int x = c.getX() + e.getX() - p0.x; int y = c.getY() + e.getY() - p0.y; SpringLayout layout = (SpringLayout)getContentPane().getLayout(); layout.putConstraint( SpringLayout.WEST, c, x, SpringLayout.WEST, SpringLayoutSample.this ); layout.putConstraint( SpringLayout.NORTH, c, y, SpringLayout.NORTH, SpringLayoutSample.this ); // setSize( getWidth()+1, getHeight() ); // repaint()ではダメ } public void mouseClicked(MouseEvent e) {} public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} public void mouseMoved(MouseEvent e) {} } } public static void main(String[] args) { new NullLayoutSample(); new SpringLayoutSample(); } }

    • ベストアンサー
    • Java
  • ペイントソフトを作っているのですが・・・

    簡単な絵を書くプログラムを下のようにつくりました。 こんなようなソースが公開されているサイトをご存知のかたは教えていただけないでしょうか?? おねがいします!! import java.awt.*; import java.awt.event.*; public class mouse5 extends Frame implements MouseListener , MouseMotionListener{ //グローバル変数 int x0,y0; Color objectColor = Color.red; //コンストラクタ public mouse5(){ setSize(400,300); //マウスイベント addMouseListener(this); addMouseMotionListener(this); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); } //paint public void paint(Graphics g){ } //マウスが押されたら public void mousePressed(MouseEvent e){ //始点の座標 x0 = e.getX(); y0 = e.getY(); } //マウスが放されたら public void mouseReleased(MouseEvent e){ } //マウスがクリックされたら public void mouseClicked(MouseEvent e){ } //マウスが画面に入ったら public void mouseEntered(MouseEvent e){ } //マウスが画面から出たら public void mouseExited(MouseEvent e){ } //マウスがドラックされたら public void mouseDragged(MouseEvent e){ //線を引く Graphics g = getGraphics(); g.drawLine(x0,y0,e.getX(),e.getY()); g.dispose(); //次のために始点を更新 x0 = e.getX(); y0 = e.getY(); } //マウスが動いたら public void mouseMoved(MouseEvent e){ } //main public static void main(String[] args) { Frame w = new mouse5(); w.show(); } }

    • ベストアンサー
    • Java