Tag: mouseevent

JFreeChart交互式图表编辑处理ChartMouseEvent

我试图拦截ChartMouseEvent以修改使用ChartFactory.createXYLineChart方法创建的JFreeChart对象的XYSeries(并使用JDialog显示)。 我通过这种方式成功检索鼠标事件的坐标: public void chartMouseMoved(ChartMouseEvent arg0) { int x = arg0.getTrigger().getX(); int y = arg0.getTrigger().getY(); 坐标系(0,0)的原点位于图片中的红色方块。 现在,我想计算鼠标在哪个区间。为了做到这一点,我需要: 灰色图表的左上角坐标(绿色方块) 灰度图的高度和宽度 我怎样才能得到这个值? 注意:我是JFreeChart新手。 如果我做错了,并且有更好的方法来实现这些目标,请让我朝着正确的方向前进。

如何在Java中按下鼠标时执行mouseEntered

我只想在鼠标当前按下时执行mouseEntered,基本上这样: @Override public void mouseEntered(MouseEvent e) { if(e.mouseDown()){ //Do stuff } } 我可以这样做,还是我需要一个鼠标运动监听器或什么? 谢谢! 编辑:抱歉应该让这个更清楚,但我需要按下鼠标才能进入组件之前,就像按住鼠标并将鼠标hover在组件上一样可以激活监听器

检测MouseEvent上的Shift修改器是否因为单击摇摆而生成

我正在使用Java Swing在GUI应用程序中处理一些MouseEvent。 从现在开始我在mousePressed方法中分析鼠标事件,只是为了确定是否发生了左击或右击。 我的代码是: public void mousePressed(MouseEvent me) { if (me.getModifiers == InputEvent.BUTTON1_DOWN_MASK){ //left click }else if (me.getModifiers == InputEvent.BUTTON3_DOWN_MASK){ //right click } 现在我的应用程序变得越来越复杂了,我还需要检查鼠标左键单击时是否按下了Shift键。 我想做这样的事情: public void mousePressed(MouseEvent me) { if (me.getModifiers == InputEvent.BUTTON1_DOWN_MASK && me.isShiftDown()){ //left click } 现在这不起作用。 特别是如果我在按住SHIFT的同时单击左按钮isShiftDown返回true(rigth。我当时正在等待),但现在似乎修改器也被更改并且与BUTTON1_DOWN_MASK的比较失败。 me.getModifiers == InputEvent.BUTTON1_DOWN_MASK //failed..modifiers are changed 我究竟做错了什么? 我该如何修复我的代码?

JavaFx透明窗口 – 是的请。 鼠标透明 – 不,谢谢

我想创建一个简单的JavaFx类,向用户显示覆盖用户屏幕的半透明矩形(比如任意50%的透明度)。 它应该只是让我得到鼠标点击事件的点。 这听起来微不足道,但是当我创建透明窗口时,它们似乎总是对鼠标事件透明,而不仅仅是我对半透明可见性的要求。 永远不会触发鼠标事件。 我在矩形和根窗格上使用了setMouseTransparent(false),但这没什么区别。 如果有人能指出任何错误/误解,我真的很感激。 这是我创建的琐碎测试类: public class ClickScreen implements MouseListener { private ClickScreenListener listener; private Stage window; private Point point; public ClickScreen(ClickScreenListener listener) { // Get screen size Rectangle2D r = Screen.getPrimary().getBounds(); // Something to put stuff in StackPane root = new StackPane(); // Translucent rectangle on the pane Rectangle rectangle = new […]

听Java中的系统鼠标点击

我的主要目标是计算特定应用程序上的鼠标点击次数。 想象一下,我在PC上打开了Microsoft Word和Web浏览器。 我的Java代码应该告诉我多少次点击Word和Web浏览器。 我需要应用程序名称和点击次数。 我怎样才能做到这一点? 任何解决方案都必须适用于MAC,Linux和Windows。

如何检测用户在Java swing中使用触控板而不是鼠标?

我有一个Java swing应用程序,它使用’泛’JComponent来显示大数据。 当用户移动鼠标滚轮时,我会听这些事件,并从滚动量更新JComponent的内容。 我想根据用户是否有不同的行为 使用经典鼠标 使用触摸板,可以在现代Mac笔记本电脑上找到。 我怎么能检测到用户正在使用鼠标滚轮和触控板来生成滚动事件? 我依靠java 1.6 swing,si我不能去javaFX。 问题背后的故事:我只想在用户使用鼠标滚轮时为滚动事件添加一种很酷的惯性感。 但是当然,在MacOSX上,触控板内置了自己的惯性。 所以我想决定是否应该产生惯性运动。

JFrame Glasspane也在JDialog上,但不应该

我有一个带有Glasspane的JFrame(未修饰)。 这个框架打开一个JDialog(也是未修饰的,也有一个glassPane)并隐藏自己(setVisible(false))。 Glasspanes使用.setGlassPane()设置。 对话框以Frame为所有者打开。 GlassPane扩展了JPanel并实现了AWTEventListener。 我用它来调整框架和对话框的大小,因此它知道它的父级(框架/对话框) – 这称为“目标”。 GlassPane中的事件处理如下: public void eventDispatched(AWTEvent event) { if (target instanceof JFrame) { e = SwingUtilities.convertMouseEvent( ((MouseEvent) event).getComponent(), (MouseEvent) event, ((JFrame) target).getGlassPane()); } else if (target instanceof JDialog) { e = SwingUtilities.convertMouseEvent( ((MouseEvent) event).getComponent(), (MouseEvent) event, this); } if (e.getID() == MouseEvent.MOUSE_PRESSED) { this.startPos = target.getLocationOnScreen(); } } 在“target.getLocationOnScree”,我得到一个IllegalComponentStateException,当隐藏JFrame并点击JDialog时。 […]

java:在Mac OsX上右键单击禁用TrayIcon

我正在尝试开发一个由系统托盘图标提供的Mac OsX应用程序,因此在第一次使用最简单的代码实现它之后,我注意到mac osX(10.8)上的每个应用程序托盘图标(包括系统和用户应用程序)都允许通过左右双击激活相对弹出菜单,但只有左侧(MouseEvent.BOTTON1)按钮导致弹出菜单下拉。 这是我的代码: public class SystemTrayDemo { private SystemTray tray; private TrayIcon tray_icon; public SystemTrayDemo() { if (!SystemTray.isSupported()) { JOptionPane.showMessageDialog(null, “System tray not supported!”); return; } else tray = SystemTray.getSystemTray(); final PopupMenu popup = new PopupMenu(); MenuItem exit = new MenuItem(“Exit”); exit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (tray != null) { […]

JTree选择问题

我有一个由JLabel和JComboBox组成的节点的JTree。 我想要的是,当点击时,所选的JComboBox将展开,但似乎第一次点击是由JTree本身(?)消耗的,所以我必须点击它两次。 这是我的代码: import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; import javax.swing.UIManager.LookAndFeelInfo; import javax.swing.plaf.ColorUIResource; import javax.swing.tree.*; public class JComboBoxJTree extends JPanel { final JTree entitiesTree; public JComboBoxJTree() { entitiesTree = createTree(); JScrollPane entitiesTreeScrollPane = new JScrollPane(entitiesTree); this.setLayout(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); c.gridx = 0; c.gridy = 1; c.weightx = 1.0; c.weighty = […]

Java Swing通过鼠标单击和拖动绘制线条

我想带回一个之前被问过的问题: 鼠标移动时的java绘制线 “我想在我的应用程序中添加一个function,允许用户通过在起始位置单击鼠标并在结束位置释放它来绘制直线。线条应在鼠标移动时移动,直到最终释放;类似于使用Microsoft Paint应用程序绘制线条的方式。 如何实现这一点,以便线条在移动时重新绘制,而不重新绘制可能已在该矩形区域中绘制的其他内容?“ 问题是:如何在旧线条的情况下绘制多条线? 这是适用于我的代码,但是一旦绘制一个新代码,前一行就会被删除: public static void main(String args[]) throws Exception { JFrame f = new JFrame(“Draw a Red Line”); f.setSize(300, 300); f.setLocation(300, 300); f.setResizable(false); JPanel p = new JPanel() { Point pointStart = null; Point pointEnd = null; { addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { pointStart = e.getPoint(); } […]