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的功能及其工作原理的更多详细信息 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


