-1

重複の可能性:
Java で画像の上に非表示のクリック可能なオブジェクトを作成したい

したがって、ユーザーが特定の x 値と y 値内をクリックしたときに、Java ゲームが特定の方法で応答するようにしたいと考えています。具体的には、ユーザーが画像の特定の部分をクリックすると、ゲームが配列内の画像に移動するようにします。すべての画像を含む配列を持ち、最初の画像を自動的に描画するクラスが既にあります。これは JFrame で行われます。また、プログラムにこれを実行させますが、これを拡張する新しいクラスを作成し、ゲームが特定のクリックに応答するようにするためのすべてのコードを新しいクラスに配置する必要がありますか? これまでの私のコードは次のとおりです。

import java.awt.event.*;
import java.awt.*; 
import javax.swing.*;

public class drawPictures extends JFrame implements MouseListener { //it implements this because I want the user to click stuff
    //Now I need to declare the images that serve as my levels variables ahead of time.
    protected static Image levelOne;
    protected static Image levelTwo;
    protected static Image levelThree;
    protected static Image levelFour;
    protected static Image levelFive;
    protected Graphics g = this.getGraphics();  
    //Done declaring.

    //Now to load the images
    private static Image loadImage(String imgFileName) { 
        Image img = null;
        try {
            Toolkit tk = Toolkit.getDefaultToolkit();
            img = tk.getImage(imgFileName);
        } catch (Exception e) {
            System.err.println("Image not found: "+ imgFileName);
        }

        return img;
    } //done loading the images

 static Image [] pictureArray = new Image[5]; { //This is the array that will store all of the images
     //otherwise known as the "levels"
 pictureArray[0] = levelOne; //each "slot" in the array is taken up by one 
 //of the images that serves as the level
 pictureArray[1] = levelTwo;
 pictureArray[2] = levelThree;
 pictureArray[3] = levelFour;
 pictureArray[4] = levelFive;
 }

 /*
  * Now that the actual array that stores the levels has been created
  * I need to create a method that "paints" the level, 
  * and moves on to the next one when the user clicks on something.
  * 
  * I also need to create a box with dimensions 151x159 
  * overtop of the happy tomato in the first level.
  * That will be the 
  */
 public drawPictures() {
     super("One of These Things Doesn't Belong...");

     setSize(1500, 750);
     setDefaultCloseOperation(EXIT_ON_CLOSE); // Creates the "x" box.
     setVisible(true); // Makes the window visible.    

     start();
 }

 public void paint(Graphics g) {
     g.drawImage(pictureArray[0], 100, 100, this);
 }

 public static void start() 
 /*
  * this entire method exists for the sole purpose of loading the images
  * that I placed in the variables that I declared above.
  * WHY IS PROGRAMMING SO DARN TEDIOUS???
  */
    {
    levelOne = loadImage("Level 1.jpg");
    levelTwo = loadImage("Level 2.jpg");
    levelThree = loadImage("Level 3.jpg");
    levelFour = loadImage("Level 4.jpg");
    levelFive = loadImage("Level 5.jpg");
    }

    @Override
    public void mouseClicked(MouseEvent arg0) {
        // TODO Auto-generated method stub
    }

    @Override
    public void mouseEntered(MouseEvent arg0) {
        // TODO Auto-generated method stub
    }

    @Override
    public void mouseExited(MouseEvent arg0) {
        // TODO Auto-generated method stub
    }

    @Override
    public void mousePressed(MouseEvent arg0) {
        // TODO Auto-generated method stub
    }

    @Override
    public void mouseReleased(MouseEvent arg0) {
        // TODO Auto-generated method stub
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        start();
        new drawPictures(); 
    }
}
4

1 に答える 1

0

特定の x 値と y 値を知るためにいくつかを検索すると思います。これは、このクラス getPoint() のメソッドを具体的に見て、MouseEvent チェック ドキュメントを介して可能性があります。

このようなものはうまくいくことができます

public void mouseClicked(MouseEvent arg0) {

Point p = arg.getPoint();

    }
于 2012-12-06T01:39:07.393 に答える