gpt4 book ai didi

java jlabel 单击/拖动

转载 作者:行者123 更新时间:2023-11-30 06:36:24 25 4
gpt4 key购买 nike

当您单击并拖动它时,蓝色标签会移动。这可行,但 x/y 位置然后以一种有趣的方式跳跃。

代码如下:

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

@SuppressWarnings("serial")
public class test extends JFrame implements MouseListener, MouseMotionListener {

private JPanel panel = new JPanel(null);
private JLabel label1 = new JLabel();
private JLabel label2 = new JLabel();
private int mouseX = 200;
private int mouseY = 100;
private boolean drag = false;

public test() {
this.add(panel);
panel.setBackground(Color.WHITE);

panel.add(label1);
label1.setOpaque(true);
label1.setBackground(Color.BLUE);
label1.setBounds(mouseX, mouseY, 100, 50);
label1.addMouseMotionListener(this);
label1.addMouseListener(this);

panel.add(label2);
label2.setOpaque(true);
label2.setBackground(Color.RED);
label2.setBounds(mouseX + 200, mouseY, 100, 50);
label2.addMouseMotionListener(this);
label2.addMouseListener(this);
}

@Override
public void mousePressed(MouseEvent e) {
if (e.getSource() == label1) {
drag = true;
}
}

@Override
public void mouseReleased(MouseEvent e) {
drag = false;
}

@Override
public void mouseDragged(MouseEvent e) {
if (drag == true) {
mouseX = e.getX();
mouseY = e.getY();
label1.setBounds(mouseX, mouseY, 100, 50);
}
}

public void mouseMoved(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mouseClicked(MouseEvent e) {}

public static void main(String[] args) {
test frame = new test();
frame.setVisible(true);
frame.setSize(600, 400);
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

最佳答案

只需将其放在您的 MouseDragged 方法中:

public void mouseDragged(MouseEvent e) 
{
if (drag == true)
{
JComponent jc = (JComponent)e.getSource();
jc.setLocation(jc.getX()+e.getX(), jc.getY()+e.getY());
}
}

关于java jlabel 单击/拖动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4894356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com