精华内容
下载资源
问答
  • 如果有人需要,这是解决方案:使用以下代码创建名为HandScrollListener的新类:import java.awt.Cursor;import java.awt.Point;import java.awt.Rectangle;import java.awt.event.MouseAdapter;import java.awt....

    最后,我自己做了。如果有人需要,这是解决方案:

    使用以下代码创建名为HandScrollListener的新类:

    import java.awt.Cursor;

    import java.awt.Point;

    import java.awt.Rectangle;

    import java.awt.event.MouseAdapter;

    import java.awt.event.MouseEvent;

    import javax.swing.JLabel;

    import javax.swing.JViewport;

    public class HandScrollListener extends MouseAdapter

    {

    private final Cursor defCursor = Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR);

    private final Cursor hndCursor = Cursor.getPredefinedCursor(Cursor.HAND_CURSOR);

    private final Point pp = new Point();

    private JLabel image;

    public HandScrollListener(JLabel image)

    {

    this.image = image;

    }

    public void mouseDragged(final MouseEvent e)

    {

    JViewport vport = (JViewport)e.getSource();

    Point cp = e.getPoint();

    Point vp = vport.getViewPosition();

    vp.translate(pp.x-cp.x, pp.y-cp.y);

    image.scrollRectToVisible(new Rectangle(vp, vport.getSize()));

    pp.setLocation(cp);

    }

    public void mousePressed(MouseEvent e)

    {

    image.setCursor(hndCursor);

    pp.setLocation(e.getPoint());

    }

    public void mouseReleased(MouseEvent e)

    {

    image.setCursor(defCursor);

    image.repaint();

    }

    }然后在你的框架中放:

    HandScrollListener scrollListener = new HandScrollListener(label_to_move);

    jScrollPane.getViewport().addMouseMotionListener(scrollListener);

    jScrollPane.getViewport().addMouseListener(scrollListener);它应该工作!

    展开全文
  • JAVA鼠标拖动物体移动、碰撞销毁

    千次阅读 2020-02-16 16:58:11
    JAVA鼠标拖动物体移动、碰撞销毁 主要也是利用了图形化用户界面一章,主要的功能、意图不是做界面,而是鼠标拖动物体到一定的范围之后就消失。 图中有1~6张不同颜色的标签,每次启动之后他们的位置是随机的,把他们...

    JAVA鼠标拖动物体移动、碰撞销毁

    主要也是利用了图形化用户界面一章,主要的功能、意图不是做界面,而是鼠标拖动物体到一定的范围之后就消失。

    图中有1~6张不同颜色的标签,每次启动之后他们的位置是随机的,把他们拖拽到下面最大的总标签里面之后,对应的数字标签销毁并消失。

    主要还是看下面的代码和运行效果图吧!相信大家都能看懂,也比较简单。

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseMotionListener;
    import java.util.ArrayList;
    import java.util.List;
    
    /*
     *      模块
     *   鼠标拖动、销毁
     * */
    
    public class Rubbish extends JFrame {
        JPanel jp;
        JLabel[] jl = new JLabel[6];
    
        JLabel jl_zon;
        Color[] colors = {Color.BLACK,Color.CYAN,Color.GRAY,Color.RED,Color.YELLOW,Color.WHITE};
        List<JLabel> list = new ArrayList<>();
    
        int x,y;
    
        public static void main(String[] args) {
            new Rubbish();
    
        }
    
        public Rubbish(){
            jp = new JPanel();
            jp.setLayout(null);
            this.add(jp);
    
            for (int i=0;i<jl.length;i++){
                jl[i] = new JLabel(""+(i+1),JLabel.CENTER);
                jl[i].setBounds((int) (Math.random()*400),(int)(Math.random()*250) ,60,80);
                jl[i].setBackground(colors[i]);
                jl[i].setOpaque(true);
    //            System.out.println((int) (Math.random()*400)+"     "+(int) (Math.random()*250));
                jp.add(jl[i]);
                list.add(jl[i]);
            }
    
            for(int i = 0 ; i < list.size();i++) {
                JLabel jl= list.get(i);
    
                list.get(i).addMouseListener(new MouseAdapter() {
                    public void mousePressed(MouseEvent e) {
                        x = e.getX();
                        y = e.getY();
    //                    System.out.println(x+"    "+y);
                    }
    
                    public void mouseReleased(MouseEvent e) {
                        peng(jl,jl.getX(),jl.getY());
    
                    }
    
                });
    //			跟踪鼠标移动和鼠标拖动
                list.get(i).addMouseMotionListener(new MouseMotionListener() {
                    @Override
                    public void mouseMoved(MouseEvent arg0) {
                        // TODO Auto-generated method stub
    
                    }
    
                    @Override
                    public void mouseDragged(MouseEvent e) {
                        // TODO Auto-generated method stub
                        JLabel jl = (JLabel) e.getSource();
                        jl.setLocation(jl.getX()+e.getX()-x,jl.getY()+e.getY()-y);
    //                    System.out.println(x+"    "+y);
                        System.out.println(jl.getX()+"    "+jl.getY());
    //                    System.out.println(e.getX()+"    "+e.getY());
                    }
                });
            }
    
            jl_zon = new JLabel("总标签",JLabel.CENTER);
            jl_zon.setBounds(150,350,200,100);
            jl_zon.setBackground(Color.GREEN);
            jl_zon.setOpaque(true);
            jp.add(jl_zon);
    
            this.setBounds(400,200,500,500);
            this.setVisible(true);
    
        }
    
        public void peng(JLabel jlabel,int x,int y){
            if(x>150 && x<350 && y>350 && y<450){
                jp.remove(jlabel);
                jp.repaint();
            }
        }
    
    }
    

    运行效果如下:
    如图有6张标签
    这是拖动之后还剩3张
    如有不懂,加微信 :zhi19990327
    备注 :Java碰撞、消失

    展开全文
  • [Java教程]基于js鼠标拖动图片排序0 2015-02-14 16:00:42分享一款基于js的图片排序效果。鼠标拖动图片,重新排列图片的排列顺序。该插件适用浏览器:IE8、360、FireFox、Chrome、Safari、Opera、傲游、搜狗、世界之...

    [Java教程]基于js鼠标拖动图片排序

    0 2015-02-14 16:00:42

    分享一款基于js的图片排序效果。鼠标拖动图片,重新排列图片的排列顺序。该插件适用浏览器:IE8、360、FireFox、Chrome、Safari、Opera、傲游、搜狗、世界之窗。效果图如下:

    bc91bb04e6e9c61e24c974e4440db8f2.gif

    在线预览   源码下载

    实现的代码。

    html代码:

    • 1.jpg
    • 2.jpg
    • 3.jpg
    • 4.jpg
    • 5.jpg
    • 6.jpg

    css代码:* { margin: 0; padding: 0; list-style: none; } #ul1 { width: 660px; position: relative; margin: 10px auto; } #ul1 li { width: 200px; height: 150px; float: left; list-style: none; margin: 10px; } #ul1 li:hover { border-color: #9a9fa4; box-shadow: 0 0 6px 0 rgba(0, 0, 0, 0.85); } #ul1 .active { border: 1px dashed red; }

    js代码:window.onload = function () { var oUl = document.getElementById("ul1"); var aLi = oUl.getElementsByTagName("li"); var disX = 0; var disY = 0; var minZindex = 1; var aPos = []; for (var i = 0; i < aLi.length; i++) { var t = aLi[i].offsetTop; var l = aLi[i].offsetLeft; aLi[i].style.top = t + "px"; aLi[i].style.left = l + "px"; aPos[i] = { left: l, top: t }; aLi[i].index = i; } for (var i = 0; i < aLi.length; i++) { aLi[i].style.position = "absolute"; aLi[i].style.margin = 0; setDrag(aLi[i]); } //拖拽 function setDrag(obj) { obj.onmouseover = function () { obj.style.cursor = "move"; } obj.onmousedown = function (event) { var scrollTop = document.documentElement.scrollTop || document.body.scrollTop; var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft; obj.style.zIndex = minZindex++; //当鼠标按下时计算鼠标与拖拽对象的距离 disX = event.clientX + scrollLeft - obj.offsetLeft; disY = event.clientY + scrollTop - obj.offsetTop; document.onmousemove = function (event) { //当鼠标拖动时计算div的位置 var l = event.clientX - disX + scrollLeft; var t = event.clientY - disY + scrollTop; obj.style.left = l + "px"; obj.style.top = t + "px"; /*for(var i=0;i b2 || r1 < l2 || b1 < t2 || l1 > r2) { return false; } else { return true; } } //勾股定理求距离 function getDis(obj1, obj2) { var a = obj1.offsetLeft - obj2.offsetLeft; var b = obj1.offsetTop - obj2.offsetTop; return Math.sqrt(Math.pow(a, 2) + Math.pow(b, 2)); } //找到距离最近的 function findMin(obj) { var minDis = 999999999; var minIndex = -1; for (var i = 0; i < aLi.length; i++) { if (obj == aLi[i]) continue; if (colTest(obj, aLi[i])) { var dis = getDis(obj, aLi[i]); if (dis < minDis) { minDis = dis; minIndex = i; } } } if (minIndex == -1) { return null; } else { return aLi[minIndex]; } } }

    via:http://www.w2bc.com/Article/23686

    本文网址:http://www.shaoqun.com/a/110849.html

    *特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。

    JS

    0

    展开全文
  • 我需要添加一个函数,当鼠标被点击时(在钟摆上或不在钟摆上,它无关紧要),钟摆可以在钟摆的边界内被拖动,我不确定鼠标拖动是否会起作用或者如果我应该使用钟摆的类来使它更容易float r1 = 200;float r2 = 200;float m1...

    我有一个双摆的代码,通过使用摆锤的先前位置跟踪第二个钟摆中心的线条.我需要添加一个函数,当鼠标被点击时(在钟摆上或不在钟摆上,它无关紧要),钟摆可以在钟摆的边界内被拖动,我不确定鼠标拖动是否会起作用或者如果我应该使用钟摆的类来使它更容易

    float r1 = 200;

    float r2 = 200;

    float m1 = 40;

    float m2 = 40;

    float a1 = PI/2;

    float a2 = PI/2;

    float a1_v = 0;

    float a2_v = 0;

    float g = 1;

    float px2 = -1;

    float py2 = -1;

    float cx, cy;

    PGraphics canvas;

    void setup() {

    size(900, 600);

    cx = width/2;

    cy = 200;

    canvas = createGraphics(width, height);

    canvas.beginDraw();

    canvas.background(255);

    canvas.endDraw();

    }

    void draw() {

    background(255);

    imageMode(CORNER);

    image(canvas, 0, 0, width, height);

    float num1 = -g * (2 * m1 + m2) * sin(a1);

    float num2 = -m2 * g * sin(a1-2*a2);

    float num3 = -2*sin(a1-a2)*m2;

    float num4 = a2_v*a2_v*r2+a1_v*a1_v*r1*cos(a1-a2);

    float den = r1 * (2*m1+m2-m2*cos(2*a1-2*a2));

    float a1_a = (num1 + num2 + num3*num4) / den;

    num1 = 2 * sin(a1-a2);

    num2 = (a1_v*a1_v*r1*(m1+m2));

    num3 = g * (m1 + m2) * cos(a1);

    num4 = a2_v*a2_v*r2*m2*cos(a1-a2);

    den = r2 * (2*m1+m2-m2*cos(2*a1-2*a2));

    float a2_a = (num1*(num2+num3+num4)) / den;

    translate(cx, cy);

    stroke(0);

    strokeWeight(2);

    float x1 = r1 * sin(a1);

    float y1 = r1 * cos(a1);

    float x2 = x1 + r2 * sin(a2);

    float y2 = y1 + r2 * cos(a2);

    line(0, 0, x1, y1);

    fill(0);

    ellipse(x1, y1, m1, m1);

    line(x1, y1, x2, y2);

    fill(0);

    ellipse(x2, y2, m2, m2);

    a1_v += a1_a;

    a2_v += a2_a;

    a1 += a1_v;

    a2 += a2_v;

    // a1_v *= 0.99;

    // a2_v *= 0.99;

    canvas.beginDraw();

    //canvas.background(0, 1);

    canvas.translate(cx, cy);

    canvas.stroke(0);

    if (frameCount > 1) {

    canvas.line(px2, py2, x2, y2);

    }

    canvas.endDraw();

    px2 = x2;

    py2 = y2;

    }

    最佳答案 你是在正确的轨道上:cx和cy是系统原点的坐标.

    只需将它们更新为mouseDragged()回调中的鼠标坐标:

    void mouseDragged(){

    cx = mouseX;

    cy = mouseY;

    }

    为了解决您在评论中阐明的问题,一个快速而又脏的选项是简单地用鼠标坐标覆盖x2,y2(通过cx,cy系统原点位置偏移):

    float x2 = 0;

    float y2 = 0;

    if(mousePressed){

    x2 = mouseX - cx;

    y2 = mouseY - cy;

    }else{

    x2 = x1 + r2 * sin(a2);

    y2 = y1 + r2 * cos(a2);

    }

    这是一个完整的代码清单,上面适用:

    float r1 = 200;

    float r2 = 200;

    float m1 = 40;

    float m2 = 40;

    float a1 = PI/2;

    float a2 = PI/2;

    float a1_v = 0;

    float a2_v = 0;

    float g = 1;

    float px2 = -1;

    float py2 = -1;

    float cx, cy;

    PGraphics canvas;

    void setup() {

    size(900, 600);

    cx = width/2;

    cy = 200;

    canvas = createGraphics(width, height);

    canvas.beginDraw();

    canvas.background(255);

    canvas.endDraw();

    }

    void draw() {

    background(255);

    imageMode(CORNER);

    image(canvas, 0, 0, width, height);

    float num1 = -g * (2 * m1 + m2) * sin(a1);

    float num2 = -m2 * g * sin(a1-2*a2);

    float num3 = -2*sin(a1-a2)*m2;

    float num4 = a2_v*a2_v*r2+a1_v*a1_v*r1*cos(a1-a2);

    float den = r1 * (2*m1+m2-m2*cos(2*a1-2*a2));

    float a1_a = (num1 + num2 + num3*num4) / den;

    num1 = 2 * sin(a1-a2);

    num2 = (a1_v*a1_v*r1*(m1+m2));

    num3 = g * (m1 + m2) * cos(a1);

    num4 = a2_v*a2_v*r2*m2*cos(a1-a2);

    den = r2 * (2*m1+m2-m2*cos(2*a1-2*a2));

    float a2_a = (num1*(num2+num3+num4)) / den;

    translate(cx, cy);

    stroke(0);

    strokeWeight(2);

    float x1 = r1 * sin(a1);

    float y1 = r1 * cos(a1);

    float x2 = 0;

    float y2 = 0;

    if(mousePressed){

    x2 = mouseX - cx;

    y2 = mouseY - cy;

    }else{

    x2 = x1 + r2 * sin(a2);

    y2 = y1 + r2 * cos(a2);

    }

    line(0, 0, x1, y1);

    fill(0);

    ellipse(x1, y1, m1, m1);

    line(x1, y1, x2, y2);

    fill(0);

    ellipse(x2, y2, m2, m2);

    a1_v += a1_a;

    a2_v += a2_a;

    a1 += a1_v;

    a2 += a2_v;

    // a1_v *= 0.99;

    // a2_v *= 0.99;

    canvas.beginDraw();

    //canvas.background(0, 1);

    canvas.translate(cx, cy);

    canvas.stroke(0);

    if (frameCount > 1) {

    canvas.line(px2, py2, x2, y2);

    }

    canvas.endDraw();

    px2 = x2;

    py2 = y2;

    }

    请记住,这只会让您在视觉上拖动第二个球,完全忽略模拟.松开鼠标时,模拟将恢复.如果您确实希望从下到上影响模拟,则需要进行数学训练(在您的情况下为第32-44行).

    展开全文
  • nb-首先要注意的是,这是使用Java 7完成的,在Java 6中创建透明窗口的方式不同,在更新10之下是不可能的(我相信)基本上,这会创建一个透明窗口,其大小和位置可以覆盖整个虚拟屏幕(也就是说,如果您有多个屏幕,它将覆盖...
  • 就象windows那样,虚线随着鼠标拖动改变大小!!急!希望大家帮帮忙!----------------解决方案--------------------------------------------------------JS应该好实现----------------解决方案-------------------...
  • 我们需要一个功能:用鼠标拖动某些项,然后将他们移动另一个位置,例如我们可能想一些名字相似啊,或者是内容相关度更高的数据项在一起。要支持鼠标拖动,显示要增加drag-drop的支持,不过我不打算详细介绍这个,...
  • import java.awt.Cursor;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Point;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.event.MouseMotionLi...
  • 源代码import java.awt.event.ActionEvent ;import java.awt.event.ActionListener ;import java.awt.event.WindowListener ;import java.awt.event.MouseMotionAdapter ;import java.awt.event.MouseMotionListener...
  • /** NewJFrame.java** Created on 2008年2月2日, 上午11:06*/package yyplayer;import java.awt.datatransfer.DataFlavor;import java.awt.datatransfer.Transferable;import java.awt.datatransfer....
  • importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;publicclasstextextendsJFrame{publictext(){text1p=newtext1();setLayout(newBorderLayout());add(p);}classtext1ext...import java.awt.*;import ja...
  • importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;publicclassRectextendsJFrame{/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstub...import java.awt.*;import ja...
  • 如果用户拖动鼠标,则小程序上的矩形应根据当前鼠标坐标增加或减少.我有以下代码.在下面的代码中,我使用[b] SelectionArea [/ b]类扩展了在其上执行绘制操作的画布.我在此类中使用[b] image [/ b]变量进行双缓冲,以...
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼import java.awt.Color;import java.awt.Dimension;import java.awt.Graphics;import java.awt.GraphicsDevice;import java.awt.GraphicsEnvironment;import java.awt....
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼import java.awt.Color;import java.awt.Dimension;import java.awt.Graphics;import java.awt.GraphicsDevice;import java.awt.GraphicsEnvironment;import java.awt....
  • 这是一个基本的例子……它的工作原理是将标签划分为3×3网格,其中每个单元格代表图标的可能位置.public class TestMouseDrag {public static void main(String[] args) {new TestMouseDrag();}public TestMouseDrag...
  • 画了好久,草要么就是画了,没插掉原先线条,要么就是画第二个的时候第一个也被擦掉...import java.awt.*;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;class Rect extends JFrame{public...
  • DragChartPanel 是java cs架构中的一种图形展现的开源组件。业务需求需要用到DragChartPanel ,这是一种根据jtable表格中的数据给与展示的图形组件。它和其他图形组件区别再与它可以进行拖拽,用户通过它不仅可以...
  • importjava.awt.Color;importjava.awt.Graphics;importjava.awt.event.MouseEvent;importjava.awt.event.MouseListener;importjava.awt.event.MouseMotionListener;importjavax.swing.JFrame;importjavax.swing.JPan...
  • java写一个象棋小游戏,怎么实现鼠标拖动棋子的效果?用java写一个象棋小游戏,怎么实现鼠标拖动棋子的效果?用java写一个象棋小游戏,怎么实现鼠标拖动棋子的效果?就比如当鼠标在一个“马”上点击后不松开,鼠标...
  • 收录日期:2021/02/26 05:58:13 时间:2016/05/23 07:07:30 标签:Java SEimportjava.awt.*;importjava.awt.event.*;publicclassFrame1extendsFrameimplementsMouseMotionListener,MouseListener{staticFrame1frm=ne...
  • java script 鼠标拖动页面元素
  • 我有使用一个点构建的类行(起始点)并且它有一个名为setDragPoint的方法,它采用鼠标拖动点来绘制线条,同时拖动绘图图像在拖动模式下绘制时会产生太多的闪烁.为什么会这样?import java.applet.*;import java.awt....
  • 不同操作系统通常会有不同的标题...没有标题栏的窗体默认不支持鼠标拖动移动窗体,这就需要我们针对窗体添加对应的监听器。通常包含一个鼠标监听器(MouseListener)和一个鼠标移动监听器(MouseMotionListener),下面...
  • 我试图通过简单地添加鼠标监听器并使用java.awt.Component的setLocation函数来使任何组件拖动.我从JButton开始测试是否可能以我的想法.以下是我正在尝试做的代码示例:import java.awt.*;import javax.swing.*;...
  • 本例利用jQuery实现一个鼠标托动图片的功能。首先设一个wrapper,wrapper内的坐标即图片移动的坐标#...}设置图片div,这个div即要拖动的div#div1{position: absolute;left:0px;top:0px;width: 300px;height: 200p...
  • 源代码import java.awt.event.ActionEvent ;import java.awt.event.ActionListener ;import java.awt.event.WindowListener ;import java.awt.event.MouseMotionAdapter ;import java.awt.event.MouseMotionListener...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 589
精华内容 235
关键字:

java鼠标拖动

java 订阅