Java 如何让用户通过鼠标移动JLabel?
我在Java 如何让用户通过鼠标移动JLabel?,java,swing,mouseevent,mouse,jlabel,Java,Swing,Mouseevent,Mouse,Jlabel,我在JFrame工作,我在JLabel上有这些图像,我希望用户移动它们,以便选择将它们拖动到哪里 public class Level3 extends JFrame { /** * Creates new form Level3 */ public Level3() { initComponents(); jLabel16.setVisible(false); jLabel17.setVisible(false); jLabel18.setVis
JFrame
工作,我在JLabel
上有这些图像,我希望用户移动它们,以便选择将它们拖动到哪里
public class Level3 extends JFrame {
/**
* Creates new form Level3
*/
public Level3() {
initComponents();
jLabel16.setVisible(false);
jLabel17.setVisible(false);
jLabel18.setVisible(false);
jLabel19.setVisible(false);
jLabel20.setVisible(false);
jLabel21.setVisible(false);
jLabel22.setVisible(false);
} private void jButton2ActionPerformed(ActionEvent evt) {
jLabel16.setVisible(true);
jLabel17.setVisible(true);
jLabel18.setVisible(true);
jLabel19.setVisible(true);
jLabel20.setVisible(true);
jLabel21.setVisible(true);
jLabel22.setVisible(true);
}
如果您只是想在JFrame中拖动标签,可以使用此选项。这绝对不是一个完美的代码,但它确实适合我。所以试着修改它,使它更好
public class Test extends JFrame implements MouseMotionListener{
protected JLabel label;
protected Point currentLocation;
public Test() {
initComponents();
setSize(new Dimension(500, 500));
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
private void initComponents() {
label = new JLabel("some label");
currentLocation = label.getLocation();
addMouseMotionListener(this);
add(label);
}
public JLabel getLabel() {
return label;
}
public void setLabel(JLabel label) {
this.label = label;
}
@Override
public void mouseDragged(MouseEvent e) {
Point p = e.getPoint();
currentLocation.x = (int) p.getX();
currentLocation.y = (int) p.getY() - 250; // Height/2
label.setLocation(currentLocation);
}
@Override
public void mouseMoved(MouseEvent e) {
}
}
并尝试使用
数组
或列表
保留标签 我建议使用(定制)布局布局。自定义布局不仅应考虑图像的位置,还应考虑定义重叠图像的分层。顺便说一句-jLabel16.setVisible(false)代码>使没有文本的标签消失的两个好方法是:a)给它一个空图标。b) 给它一个透明的图标(如果它需要大小的话)。你也可以按照这个问题和第一个答案进行操作。链接:jLabel17.setLocation(evt.getXOnScreen(),evt.getYOnScreen()-y_按下);重新油漆()代码>这一个工作图像移动,但图像和鼠标之间的空间太大