加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – JLabel中的SetLocation

发布时间:2020-12-15 04:30:29 所属栏目:Java 来源:网络整理
导读:我的任务是在点击时获得鼠标的位置,除了一件事我完成了很多:输出的位置.我应该在第一次点击时得到这个,但是只有双击才能获得正确的输出: 这是第一次点击我得到的,无论位置如何: import javax.swing.*;import java.awt.*;import java.awt.event.*;public c
我的任务是在点击时获得鼠标的位置,除了一件事我完成了很多:输出的位置.我应该在第一次点击时得到这个,但是只有双击才能获得正确的输出:

enter image description here

这是第一次点击我得到的,无论位置如何:

enter image description here

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

public class Mouse {
public static void main(String[] args) {

    JFrame frame = new JFrame();
    JPanel panel = new JPanel();
    JLabel label = new JLabel();
    frame.add(panel);
    panel.add(label);
    panel.addMouseListener(new MouseAdapter() {
       @Override
        public void mouseClicked(MouseEvent e) {
            int x = e.getX();
            int y = e.getY();
            label.setLocation(x,y);
            label.setText("(" + x + "," + y + ")");
        }
    });
    frame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(300,300);
    frame.setVisible(true);
    }
 }

解决方法

JPanel,但默认情况下,正在使用LayoutManager,通常我会阻止你尝试使用它,但在你的情况下,你可能没有选择.

通常,我会考虑编写一个可以解决这个问题的布局管理器,但这超出了要求的范围.

相反,首先将面板的布局管理器设置为null

JFrame frame = new JFrame();
JPanel panel = new JPanel(null);

现在你已经完成了这项工作,你完全负责组件的管理,关于它的大小和位置,因此,当调用mouseClicked时,你需要设置标签的文本,位置和大小,例如.

panel.addMouseListener(new MouseAdapter() {
   @Override
    public void mouseClicked(MouseEvent e) {
        int x = e.getX();
        int y = e.getY();
        label.setLocation(x,y);
        label.setText("(" + x + "," + y + ")");
        label.setSize(label.getPreferredSize());
    }
});

仔细查看Laying Out Components Within a Container,了解有关布局管理器API的功能及其工作原理的更多详细信息

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读