java – JLabel中的SetLocation
发布时间:2020-12-15 04:30:29 所属栏目:Java 来源:网络整理
导读:我的任务是在点击时获得鼠标的位置,除了一件事我完成了很多:输出的位置.我应该在第一次点击时得到这个,但是只有双击才能获得正确的输出: 这是第一次点击我得到的,无论位置如何: import javax.swing.*;import java.awt.*;import java.awt.event.*;public c
我的任务是在点击时获得鼠标的位置,除了一件事我完成了很多:输出的位置.我应该在第一次点击时得到这个,但是只有双击才能获得正确的输出:
这是第一次点击我得到的,无论位置如何: 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的功能及其工作原理的更多详细信息 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |