gpt4 book ai didi

java - 如何在java中根据鼠标位置弹出字符串描述

转载 作者:行者123 更新时间:2023-12-01 11:14:57 26 4
gpt4 key购买 nike

问题很简单。我想创建一个框,然后在鼠标附近弹出一个小字符串,指示当前鼠标位置是框的“内部”或“外部”。尽管解决方案对我来说并不明显。我不想要一个大的对话框组件,只想要像文本本身一样小的东西,而且生命周期很短。

有人可以向我指出一个可以做到这一点的类(class)吗?

最佳答案

尝试设置 Tooltip到框组件,另一个工具提示到背景。

例如:

public class Test {

public static void main(final String[] args) {
SwingUtilities.invokeLater(new Runnable(){
@Override
public void run() {
final JFrame jf = new JFrame();
jf.setSize(800, 600);
jf.setTitle("Test");
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.getContentPane().setLayout(new BorderLayout());
final JPanel panel = new JPanel();
panel.setBackground(Color.red);
jf.getContentPane().add(panel, BorderLayout.CENTER);
jf.setVisible(true);

final JPanel box = new JPanel();
box.setPreferredSize(new Dimension(100, 100));
box.setBackground(Color.black);

panel.add(box, BorderLayout.CENTER);
box.setToolTipText("Inside");
panel.setToolTipText("Outside");
}
});
}
}

在本例中,这是在面板上绘制的点附近或外部设置工具提示的示例:

public class Test {

public static void main(final String[] args) {
SwingUtilities.invokeLater(new Runnable(){
@Override
public void run() {
final JFrame jf = new JFrame();
jf.setSize(800, 600);
jf.setTitle("Test");
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.getContentPane().setLayout(new BorderLayout());
final int px = 200;
final int py = 200;
final int delta = 10;
final JPanel panel = new JPanel(){
@Override
protected void paintComponent(final java.awt.Graphics g) {
super.paintComponent(g);
final Color c = g.getColor();
g.setColor(Color.yellow);
g.fillOval(px - delta/2, py - delta/2, delta, delta);
g.setColor(c);
}
};
panel.setBackground(Color.red);

panel.addMouseMotionListener(new MouseAdapter() {
@Override
public void mouseMoved(final MouseEvent e) {
final int x = e.getX();
final int y = e.getY();
if (Math.abs(x - px) < delta && Math.abs(y - py) < delta){
panel.setToolTipText("Point!");
}else{
panel.setToolTipText("Outside");
}
}
});

jf.getContentPane().add(panel, BorderLayout.CENTER);
jf.setVisible(true);
}
});
}
}

关于java - 如何在java中根据鼠标位置弹出字符串描述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31947327/

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