求用ECLIPSE java编一个鼠标获取坐标代码!

求用ECLIPSE java编一个鼠标获取坐标代码!,第1张

package comwztest1;

import javaawt;

import javaawtevent;

import javaxswing;

public class Painter extends JFrame {

private int pointCount = 0;

// array of 1000 javaawtPoint references

private Point points[] = new Point[ 1000 ];

// set up GUI and register mouse event handler

public Painter()

{

super( "A simple paint program" );

// create a label and place it in SOUTH of BorderLayout

getContentPane()add( new JLabel( "Drag the mouse to draw" ),

BorderLayoutSOUTH );

addMouseMotionListener(

new MouseMotionAdapter() { // anonymous inner class

// store drag coordinates and repaint

public void mouseDragged( MouseEvent event )

{

if ( pointCount < pointslength ) {

points[ pointCount ] = eventgetPoint();

++pointCount;

repaint();

}

}

} // end anonymous inner class

); // end call to addMouseMotionListener

setSize( 300, 150 );

setVisible( true );

} // end Painter constructor

// draw oval in a 4-by-4 bounding box at specified location on window

public void paint( Graphics g )

{

superpaint( g ); // clears drawing area

for ( int i = 0; i < pointslength && points[ i ] != null; i++ )

gfillOval( points[ i ]x, points[ i ]y, 4, 4 );

}

public static void main( String args[] )

{

Painter application = new Painter();

applicationsetDefaultCloseOperation( JFrameEXIT_ON_CLOSE );

}

} // end class Painter

import javaawt;

import javaawtevent;

public class Test {

public static void main(String args[]) {

new myFrame();

}

}

class myFrame extends Frame {

TextField tf1,tf2;

public myFrame(){

tf1 = new TextField(5);

tf2 = new TextField(5);

add(tf1);

add(tf2);

setLayout(new FlowLayout());

setBounds(100,100,400,300);

addMouseMotionListener(new MouseMotionAdapter(){//鼠标移动事件的侦听器

public void mouseMoved(MouseEvent e) {//鼠标按键在组件上移动(无按键按下)时调用。

tf1setText(egetX()+"" );

tf2setText(egetY()+"" );

}

});

addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e) {

Systemexit(0);

}

});

setVisible(true);

}

}

写过一个类似的,我当时的思路是这样的

动物棋子,应该设计成为一个类 ,并且有自定义的属性(,位置信息)啊,位置可以是一个Point(x,y)或者两个数字i, j ,代表是在二维地图数组中的位置   当移动棋时,修改属性为新的位置 并在新位置绘制

public class Chess extends JButton{

        //其他属性忽略,主要属性如下

        

int value;//棋子类型, 根据类型可以显示对应的

int i;//横坐标    也可以封装成一个Point类,类里有x,y坐标

int j;//纵坐标

public Chess(int value, int i, int j) {

thisvalue = value;

thisi = i;

thisj = j;

}

代码如下:

import javaawtDimension;

import javaawtMouseInfo;

import javaawtPoint;

import javaawtRobot;

import javaawteventActionEvent;

import javaawteventActionListener;

import javaawteventMouseEvent;

import javaawteventMouseMotionListener;

import javaxswingJButton;

import javaxswingJFrame;

import javaxswingWindowConstants;

public class MouseHelp extends javaxswingJPanel implements MouseMotionListener {

private JButton textButton;

Robot robot;

/

Auto-generated main method to display this

JPanel inside a new JFrame

/

public static void main(String[] args) {

JFrame frame = new JFrame();

framegetContentPane()add(new MouseHelp());

framesetDefaultCloseOperation(WindowConstantsDISPOSE_ON_CLOSE);

framepack();

framesetVisible(true);

}

public MouseHelp() {

super();

initGUI();

}

private void initGUI() {

try {

robot=new Robot();

addMouseMotionListener(this);

setPreferredSize(new Dimension(400, 300));

thissetLayout(null);

{

textButton = new JButton();

thisadd(textButton);

textButtonsetText("\u8fd0 \u884c");

textButtonsetBounds(136, 72, 127, 22);

textButtonaddActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e) {

robotmouseMove(30,745);

try {

Threadsleep(1000);

robotmousePress(MouseEventBUTTON1_MASK);

robotmouseRelease(MouseEventBUTTON1_MASK);

Threadsleep(1000);

robotmouseMove(150,481);

robotmousePress(MouseEventBUTTON1_MASK);

robotmouseRelease(MouseEventBUTTON1_MASK);

} catch (InterruptedException e1) {

// TODO Auto-generated catch block

e1printStackTrace();

}

}});

}

} catch (Exception e) {

eprintStackTrace();

}

}

public void mouseDragged(MouseEvent e) {

// TODO Auto-generated method stub

}

public void mouseMoved(MouseEvent e) {

// TODO Auto-generated method stub

//从这里获取鼠标的全局坐标

Point mousepoint = MouseInfogetPointerInfo()getLocation();

Systemoutprintln(mousepointx+"\t"+mousepointy);

}

}

还是继续的通俗的给你讲解下吧我是这样理解你的意思的,首先你是想通过键盘来模拟做鼠标左的事情其实鼠标在窗口的位置没有改变 改变的只是的视觉变化就类似于CS当中你用键盘来控制方向 其实鼠标的位置没有变 变的只是视觉和的位置和角度不一样在java当中一下就是鼠标的事件方法 addMouseListener(new MouseListener(){

public void mouseClicked(MouseEvent e){};

public void mousePressed(MouseEvent e){};

public void mouseReleased(MouseEvent e){};

public void mouseEntered(MouseEvent e){};

public void mouseExited(MouseEvent e){};

});你可以通过接受键盘的输入字符来做对于德 *** 作例如当点击回车的时候调用鼠标对于的public void mouseEntered(MouseEvent e){};

方法 这样就是对于德鼠标按下的意思以此类推 希望你能明白

那些东西都是系统给实现的,不用你去管。比方说光标的移动,文本的删除,粘贴复制之类的东西已经实现好了,你直接用就是了~~

鼠标位置在右下角的状态栏里面有!~~

直接按del键就删了啊!~~

那些东西都是系统给实现的,不用你去管。比方说光标的移动,文本的删除,粘贴复制之类的东西已经实现好了,你直接用就是了~~

2018年3月计算机二级考试JAVA入门知识点:鼠标事件

鼠标事件的事件源往往与容器相关,当鼠标进入容器、离开容器,或者在容器中单击鼠标、拖动鼠标时都会发生鼠标事件。java语言为处理鼠标事件提供两个接口:MouseListener,MouseMotionListener接口。

MouseListener接口

MouseListener接口能处理5种鼠标事件:按下鼠标,释放鼠标,点击鼠标、鼠标进入、鼠标退出。相应的方法有:

(1) getX():鼠标的X坐标

(2) getY():鼠标的Y坐标

(3) getModifiers():获取鼠标的左键或右键。

(4) getClickCount():鼠标被点击的次数。

(5) getSource():获取发生鼠标的事件源。

(6) addMouseListener(监视器):加放监视器。

(7) removeMouseListener(监视器):移去监视器。

要实现的MouseListener接口的方法有:

(1) mousePressed(MouseEvent e);

(2) mouseReleased(MouseEvent e);

(3) mouseEntered(MouseEvent e);

(4) mouseExited(MouseEvent e);

(5) mouseClicked(MouseEvent e);

例 11-18小应用程序设置了一个文本区,用于记录一系列鼠标事件。当鼠标进入小应用程序窗口时,文本区显示“鼠标进来”;当鼠标离开 窗口时,文本区显示“鼠标走开”;当鼠标被按下时,文本区显示“鼠标按下”,当鼠标被双击时,文本区显示“鼠标双击”;并显示鼠标的坐标。程序还显示一个红色的圆,当点击鼠标时,圆的半径会不断地变大(查看源文件)。

任何组件上都可以发生鼠标事件:鼠标进入、鼠标退出、按下鼠标等。例如,在上述程序中添加一个按钮,并给按钮对象添加鼠标监视器,将上述程序中的init()方法修改成如下形式,即能示意按钮上的所有鼠标事件。

JButton button;

public void init(){

button = new JButton(“按钮也能发生鼠标事件”);

r = 10;

text = new JTextArea(15,20);

add(button);

add(text);

buttonaddMouseListener(this);

}

如果程序希望进一步知道按下或点击的是鼠标左键或右键,鼠标的左键或右键可用InputEvent类中的常量BUTTON1_MASK和BUTTON3_MASK来判定。例如,以下表达式判断是否按下或点击了鼠标右键:

egetModifiers()==InputEvent BUTTON3_MASK

MouseMotionListener接口

MouseMotionListener接口处理拖动鼠标和鼠标移动两种事件。

注册监视器的方法是:

addMouseMotionListener(监视器)

要实现的的接口方法有两个:

(1) mouseDragged(MouseEvent e)

(2) mouseMoved(MouseEvent e)

例 11-19一个滚动条与显示窗口同步变化的应用程序。窗口有一个方块,用鼠标拖运方块,或用鼠标点击窗口,方块改变显示位置,相应水平和垂直滚动条的滑块也会改变它们在滚动条中的位置。反之,移动滚动条的滑块,方块在窗口中的显示位置也会改变(查看源文件)。

上述例子中,如果只要求通过滑动滑块,改变内容的显示位置,可以简单地使用滚动面板JScrollPane。如果是这样,关于滚动条的创建和控制都可以免去,直接由JScrollPane内部实现。参见以下修改后的MyWindow的定义:

class MyWindow extends JFrame{

public MyWindow(String s){

super(s);

Container con = thisgetContentPane();

consetLayout(new BorderLayout());

thissetLocaltion(100,100);

MyListener listener = new MyListener();

listenersetPreferredSize(new Dimension(700,700));

JScrollPane scrolledCanvas = new JScrollPane(listener);

thisadd(scrolledCanvas,BorderLayoutCENTER);

thissetVisible(true);

thispack();

}

public Dimension getPreferredSize(){

return new Dimension(400,400);

}

}

鼠标指针形状也能由程序控制 ,setCursor()方法能设置鼠标指针形状。例如,代码setCursor(CursorgetPredefinedCursor(cursorWAIT_CURSOR))。

import javaawt;

import javaawtevent;

import javaawtimage;

import javaxswing;

public class GetRectPixel {

public GetRectPixel() {

ImageHolder holder = new ImageHolder();

JFrame frame = new JFrame();

JPanel panel = new JPanel();

paneladd(holder);

framegetContentPane()add(panel);

framesetSize(400,400);

framesetVisible(true);

}

public static void main(String[] args) {

GetPixel getpixel = new GetPixel();

}

}

class ImageHolder extends Canvas{

BufferedImage bi ;//创建缓冲区图像

Image image;

MediaTracker mt ;//创建媒体跟踪器

int imageWidth; //图像宽度

int imageHeight;//图像高度

public ImageHolder() {

mt =new MediaTracker(this);

try{

image = ToolkitgetDefaultToolkit()createImage("gigi3jpg");

mtaddImage(image,0);

mtwaitForAll();//等待直到所有的图像都以完成装填

imageWidth = imagegetWidth(this);//获得单前图像的宽度

imageHeight = imagegetHeight(this);//获得当前图像的长度

}

catch(Exception e){}

bi = new BufferedImage(imageWidth,imageHeight,BufferedImageTYPE_INT_RGB);

addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent me){

//获得鼠标当前位置的横,纵坐标

int mouseX = (int)megetPoint()getX();

int mouseY =(int) megetPoint()getY();

//获得该处的rgb值

getPixel(mouseX,mouseY);

}

});

setSize(imageWidth,imageHeight);

}

public void paint(Graphics g){

int xCenter = (getSize()width / 2) - (imageWidth / 2);

int yCenter = (getSize()height / 2) - (imageHeight / 2);

gdrawImage(image, xCenter, yCenter, imageWidth, imageHeight, this);

}

public void getPixel(int x,int y){

//获得ImageHolder的色彩模型

ColorModel cm = thisgetColorModel();

//把象素形式的色彩组件(ImageHolder)以rgb的形式返回。

int rgb = cmgetRGB(xy);

//分别获得其r,g,b值。

int red = (rgb>>16)&0xff ;

int green = (rgb>>8)&0xff ;

int blue = (rgb)&0xff ;

Systemoutprintln( "("+red+","+green+ ","+blue+ ")");

}

}

以上就是关于求用ECLIPSE java编一个鼠标获取坐标代码!全部的内容,包括:求用ECLIPSE java编一个鼠标获取坐标代码!、Java怎么作一个记录鼠标坐标的程序、JAVA游戏鼠标监听获取坐标等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9667272.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存