Tag: 事件监听器

Hibernate事件监听器 – 回滚

我实现了一个像这样的Hibernate事件监听器: public class AuditListener implements PostInsertEventListener { private static final long serialVersionUID = -966368101369878522L; @Override public void onPostInsert(PostInsertEvent event) { if (event.getEntity() instanceof Auditable) { StatelessSession session = null; try { session = event.getPersister().getFactory().openStatelessSession(); Auditable auditableEntity = (Auditable)event.getEntity(); session.beginTransaction(); session.insert(new AuditTrail(auditableEntity.getClass().getSimpleName(), auditableEntity.getId(), auditableEntity.getStatus(), auditableEntity.getLastModified())); session.getTransaction().commit(); } catch (HibernateException he) { System.out.println(“Horrible error: ” + he.getMessage()); […]

如何知道firebase的ChildEventListener是否找到了孩子?

所以我试图通过他们的电子邮件获得用户密钥,问题是我在我的代码中不知道如果查询实际上发现了什么或者没有…所以我假设如果我在onchilddded中查询是成功的一个孩子被发现所以我会把钥匙传递到另一个活动并停止当前的活动,但是当我运行应用程序时,整个代码被执行..我觉得我的方式有点错,但我没有找到任何方法来知道是否查询是成功的还是找到了孩子….如果你有任何想法请求帮助…… public void searchemail(String email){ Firebase ref = new Firebase(“https://.firebaseio.com/users”); Query queryRef = ref.orderByChild(“Email”).equalTo(email); ChildEventListener listener = new ChildEventListener() { @Override public void onChildAdded(DataSnapshot dataSnapshot, String s) { userkey = dataSnapshot.getKey(); homeintent.putExtra(“key”, userkey); startActivity(homeintent); finish(); return; // I want code to stop here }} queryRef.addChildEventListener(listener); Toast toast = Toast.makeText(this, “email not found”, Toast.LENGTH_SHORT); // Im […]

带有匿名EventListener的JPanel – 为什么GC不会破坏侦听器?

我一直在仔细阅读JMapViewer的开源代码。 如果有其他人希望查看它,请检查SVN 。 简而言之,主类是JMapViewer ,它是JPanel的扩展。 还有另一个非常重要的类,名为DefaultMapController ,它充当主类的MouseListener 。 我注意到的第一个奇怪的事情是观众没有对控制器的引用。 JMapViewer构造函数实例化DefaultMapController的匿名实例,如下所示: public JMapViewer() { // other stuff new DefaultMapController(this); } 在我看来这是一个糟糕的设计选择,因为控制器有很多方法(选项,切换等 – 下面显示的例子),现在根本无法访问,所以有什么好处呢? public void setMovementMouseButton(int movementMouseButton) { // changes which mouse button is used to move the map } 控制器确实有一个对查看器的引用,如上面的第一个片段所示,这是它能够控制的方式。 然而,那时我想到的东西更怪异! 如果这个监听器的匿名实例没有引用,为什么它甚至可以存活? GC不应该迅速摧毁它吗? 或者GC是否足够聪明,知道引用实时JComponent的侦听器类也必须保持活动才能正常工作,即使它由于某些奇怪的原因而没有名称? 那么,两个真正的问题: 为什么GC不会破坏对象? 这确实是一个糟糕的设计选择,还是有一些方法我不知道从实例化查看器的类访问控制器? 我想为这个开源库做贡献,我改变的第一个想法是改变JMapViewer类,让一个字段引用它的控制器,并改变构造函数,将当前的匿名控制器分配给这个新字​​段。 但是,我想确保我不会无知地遗漏某些东西。 我在整个代码库中搜索了DefaultMapController文本,它只出现在它自己的类定义中,以及JMapViewer构造函数中的匿名实例化中。 编辑: 确实有一种方法可以通过使用java.awt.Component方法getMouseListeners()来访问匿名侦听器。 因此,在我的应用程序中,我可以在此集合中搜索DefaultMapController实例,并使用它来访问我需要用来更改控制器选项的方法。 但是,为了扮演魔鬼的拥护者,如果我采用原创的想法并给地图作为其控制器的参考,现在我有一种循环参考(地图知道控制器和控制器知道地图)。 这是一个坏主意吗?

EventListenerList触发顺序

在Swing应用程序中,我有许多子面板,每个子面板都监听一个JSlider 。 周围的父面板也会监听所有子面板。 为了在下面的示例中获得一致的结果,我必须首先添加父项, 然后添加本地侦听器。 考虑到EventListenerList规定的顺序并在本文中进行了解释,这是有道理的。 我可以依赖该订单,还是应该安排发送不同的活动? class SubPanel extends JPanel implements ChangeListener { private final JSlider slider = new JSlider(); private final JLabel label = new JLabel(); private final String name; private float value; public SubPanel(String name, float value, ChangeListener parent) { this.name = name; this.value = value; … slider.addChangeListener(parent); slider.addChangeListener(this); } … } […]