作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问题很简单。我想创建一个框,然后在鼠标附近弹出一个小字符串,指示当前鼠标位置是框的“内部”或“外部”。尽管解决方案对我来说并不明显。我不想要一个大的对话框组件,只想要像文本本身一样小的东西,而且生命周期很短。
有人可以向我指出一个可以做到这一点的类(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/
我是一名优秀的程序员,十分优秀!