「java绘制鼠标轨迹」java移动鼠标光标

博主:adminadmin 2022-12-23 13:57:10 69

本篇文章给大家谈谈java绘制鼠标轨迹,以及java移动鼠标光标对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java如何编写用鼠标脱出轨迹 我的代码怎么修改就有轨迹了 求帮助

把鼠标的x和y放一个队列里,限定队列长度,每次都把队列里的点画出来就行了。

用java写一个物体移动的轨迹

lz 你好

我做了一个比较简单的雏形

绿色正方形水平随机运动

蓝色正方形垂直随机运动

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

import java.math.*;

 

public class MoveRect extends Frame implements Runnable{

    private Rectangle hRect, vRect;

    private Image buffer;

    private Object o = new Object();

     

    public MoveRect(){

        super("MoveRect");

         

        hRect = new Rectangle(50,0,50,50);//水平随机运动的正方形

        vRect = new Rectangle(0,50,50,50);//垂直随机运动的正方形

         

        setUndecorated(true);  

        setLocation(500,200);

        setSize(400,400);

        setVisible(true);

        addWindowListener(new WindowAdapter(){

            public void windowClosing(WindowEvent e){

                System.exit(0);

            }

        });

    }

     

    //启动循环绘制(使正方形一直循环的运动)

    public void circleDraw(){

    }

     

    //绘制正方形的状态

    public void drawRect(Graphics g,Rectangle r){

        g.drawRect(r.x, r.y, r.width, r.height);

    }

     

    //双缓冲机制(主要解决闪屏)

    public void update(Graphics g){

        buffer = createImage(getSize().width, getSize().height);

         

        if(buffer != null){          

            Graphics g2 = buffer.getGraphics();

            paint(g2);

            g2.dispose();      

            g.drawImage(buffer, 0, 0, this);        

        }

         

        else{

            paint(g);

        }

    }

     

    public void paint(Graphics g){      

        g.setColor(Color.GREEN);

        drawRect(g,hRect);

        g.setColor(Color.BLUE);

        drawRect(g,vRect);

         

        hRect.x = (int)(Math.random()*351);

        vRect.y = (int)(Math.random()*351);  

    }

     

    public void run(){

        while(true){

            stop();

            rePaint();

        }              

    }

     

    //同步方法rePaint

    public synchronized void rePaint(){

        repaint();

    }

     

    //同步方法stop

    public synchronized void stop(){

        if(hRect.x = 50  vRect.y = 50){

            try {

                Thread.sleep(500);

            }

            catch (Exception ex) {

                ex.printStackTrace();

            }

        }      

    }

     

    public static void main(String[] args){    

        new Thread(new MoveRect()).start();

    }

}

做一个用鼠标绘图的java程序

写了一个最基本的,可以照了代码改复杂,功能都实现没有问题。

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Container;

import java.awt.Dimension;

import java.awt.FlowLayout;

import java.awt.Graphics;

import java.awt.Point;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import javax.swing.BorderFactory;

import javax.swing.JButton;

import javax.swing.JColorChooser;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JTextField;

public class DrawImage extends JFrame{

private Container c = null;

private JButton lineButton = null,

rectangleButton = null,

ovalButton = null,

colorChooser=null,

clearButton = null;

private JTextField textField = null;

private static int DRAW_LINE=0,

DRAW_RECTANGLE=1,

DRAW_OVAL=2,

CLEAR=3;

private int drawMode = DRAW_RECTANGLE;

private int lineWidth = 5;

private Color color = Color.RED;

private JPanel drawPane,p=null;

private DrawImage frame = null;

private ActionListener buttonListener=null;

private MouseListener mouseListener = null;

private Point lp=new Point(-1,-1), //鼠标落下的点

cp=new Point(-1,-1); //鼠标拖拽的点

public DrawImage(){

frame = this;

initListener();

initFrame();

}

public void initListener(){

buttonListener = new ActionListener(){

public void actionPerformed(ActionEvent e) {

String str = ((JButton)e.getSource()).getText();

if(str.compareTo("画线")==0){

drawMode = DRAW_LINE;

}else if(str.compareTo("方形")==0){

drawMode = DRAW_RECTANGLE;

}else if(str.compareTo("画圆")==0){

drawMode = DRAW_OVAL;

}else if(str.compareTo("擦除")==0){

drawMode = CLEAR;

}else if(str.compareTo("颜色")==0){

color = JColorChooser.showDialog(frame, "取色板",color);

colorChooser.setBackground(color);

}

}

};

mouseListener = new MouseListener(){

public void mouseClicked(MouseEvent e) {

}

public void mouseEntered(MouseEvent e) {

}

public void mouseExited(MouseEvent e) {

}

public void mousePressed(MouseEvent e) {

lp = e.getPoint();

}

public void mouseReleased(MouseEvent e) {

cp = e.getPoint();

drawPane.repaint();

}

};

}

public void initFrame(){

c=this.getContentPane();

lineButton = new JButton("画线");

rectangleButton = new JButton("方形");

ovalButton = new JButton("画圆");

clearButton = new JButton("擦除");

colorChooser = new JButton("颜色");

colorChooser.setBackground(color);

textField = new JTextField(5);

drawPane = new JPanel(){

public void paint(Graphics g){

g.setColor(color);

if(drawMode==DRAW_LINE){

g.drawLine(lp.x,lp.y, cp.x, cp.y);

}else if(drawMode==DRAW_RECTANGLE){

g.drawRect(lp.x, lp.y, Math.abs(lp.x-cp.x), Math.abs(lp.y-cp.y));

}else if(drawMode==DRAW_OVAL){

g.drawOval(lp.x, lp.y, Math.abs(lp.x-cp.x), Math.abs(lp.y-cp.y));

}else if(drawMode==CLEAR){

g.clearRect(lp.x, lp.y, Math.abs(lp.x-cp.x), Math.abs(lp.y-cp.y));

}

}

};

p = new JPanel();

p.setPreferredSize(new Dimension(100,800));

p.setLayout(new FlowLayout(FlowLayout.LEADING));

p.add(lineButton);

p.add(rectangleButton);

p.add(ovalButton);

p.add(clearButton);

p.add(colorChooser);

p.add(textField);

lineButton.addActionListener(buttonListener);

rectangleButton.addActionListener(buttonListener);

ovalButton.addActionListener(buttonListener);

colorChooser.addActionListener(buttonListener);

clearButton.addActionListener(buttonListener);

drawPane.addMouseListener(mouseListener);

drawPane.setBorder(BorderFactory.createLineBorder(Color.red,3));

c.add(p,BorderLayout.WEST);

c.add(drawPane,BorderLayout.CENTER);

}

public static void main(String[] args){

DrawImage frame = new DrawImage();

frame.setVisible(true);

frame.setSize(600,600);

frame.setLocationRelativeTo(null);

frame.setDefaultCloseOperation(EXIT_ON_CLOSE);

}

}

Java怎么作一个记录鼠标坐标的程序??

import java.awt.*;

import java.awt.event.*;

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) {//鼠标按键在组件上移动(无按键按下)时调用。

tf1.setText(e.getX()+"" );

tf2.setText(e.getY()+"" );

}

});

addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});

setVisible(true);

}

}

用JAVA实现画线,不是直线,而是点住鼠标左键划到哪里哪里就画线,就

import java.awt.BasicStroke;

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.FlowLayout;

import java.awt.Frame;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.Label;

import java.awt.Panel;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import java.awt.event.MouseMotionListener;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

public class MouseDrawPanel extends Frame

{

private static final long serialVersionUID = 1L;

MouseEvent e = null;

int startX = -1;

int startY = -1;

int endX = -1;

int endY = -1;

boolean left = false;

public MouseDrawPanel ( String title )

{

setTitle (title);

setLayout (new BorderLayout ());

setResizable (false);

setSize (500, 400);

setLocationRelativeTo (null);

addWindowListener (new WindowAdapter ()

{

@Override

public void windowClosing ( WindowEvent e )

{

System.exit (0);

}

});

}

@Override

public void paintComponents ( Graphics g )

{

float lineWidth = 8.0f;

( (Graphics2D) g ).setStroke (new BasicStroke (lineWidth));

g.setColor (Color.YELLOW);

g.drawLine (startX, startY, endX, endY);

g.dispose ();

}

public static void main ( String[] args )

{

final MouseDrawPanel mdp = new MouseDrawPanel ("Use Mouse Draw");

Panel panel = new Panel ();

panel.setLayout (new FlowLayout (FlowLayout.LEFT));

Label startL = new Label ("start: ");

Label endL = new Label ("end: ");

final Label nowL = new Label ("now: ");

final Label startR = new Label ("000,000");

final Label endR = new Label ("000,000");

final Label nowN = new Label ("000,000");

panel.add (startL);

panel.add (startR);

panel.add (endL);

panel.add (endR);

panel.add (nowL);

panel.add (nowN);

mdp.add (panel, "South");

mdp.addMouseMotionListener (new MouseMotionListener ()

{

@Override

public void mouseMoved ( MouseEvent e )

{

if (mdp.left)

{

nowN.setText (e.getX () + " , " + e.getY ());

}

}

@Override

public void mouseDragged ( MouseEvent e )

{

if (mdp.left)

{

mdp.endX = e.getX ();

mdp.endY = e.getY ();

mdp.paintComponents (mdp.getGraphics ());

mdp.startX = mdp.endX;

mdp.startY = mdp.endY;

endR.setText (mdp.endX + " , " + mdp.endY);

}

}

});

mdp.addMouseListener (new MouseAdapter ()

{

@Override

public void mousePressed ( MouseEvent e )

{

if (e.getButton () == MouseEvent.BUTTON1)

{

mdp.startX = e.getX ();

mdp.startY = e.getY ();

startR.setText (mdp.startX + " , " + mdp.startY);

mdp.left = true;

}

else

{

mdp.left = false;

}

}

@Override

public void mouseReleased ( MouseEvent e )

{

if (mdp.left)

{

endR.setText (e.getX () + " , " + e.getY ());

}

}

});

mdp.setVisible (true);

}

}

请教一个java中点击鼠标绘制图形的问题

人家都是在此点与上点之间绘直线。否则就是这样。此法记得是在《windows程序设计》一书里讲的。

java绘制鼠标轨迹的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java移动鼠标光标、java绘制鼠标轨迹的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-23,除非注明,否则均为首码项目网原创文章,转载请注明出处。