Tag: 事件

我可以在Java中的actionPerformed方法中使用switch – case

我想检查ActionEvent e和e.getSource()发生了哪个actionEvent。 我可以使用开关盒吗? public void actionPerformed(ActionEvent e){ switch(e.getSource()){ case radius: double r = validate(radius.getText()); break; case height: double h = validate(height.getText()); break; case out: out.setText(String.valueOf(h*r)); break; } }

从Android上的Calendar Provider中删除事件

我有一个应用程序,它使用Calendar Provider来添加,编辑和删除事件。 我有一个日历界面,显示哪些日子附有活动。 添加事件非常有效。 为了添加事件,我使用数字3对calendarID进行了硬编码,因此calID = 3。 long calID=3; values.put(Events.DESCRIPTION, description); values.put(Events.CALENDAR_ID, calID); values.put(Events.EVENT_TIMEZONE, “Europe/London”); Uri uri = cr.insert(Events.CONTENT_URI, values); 这非常有效。 我编程的视图显示了事件。 我打开手机中包含的日历应用程序(Xperia J),我可以看到事件就在那里。 我尝试使用以下代码删除事件: ContentResolver cr = mContext.getContentResolver(); ContentValues values = new ContentValues(); Uri deleteUri = null; deleteUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID); int rows = mContext.getContentResolver().delete(deleteUri, null, null); 此代码直接从developer.android.com网站复制。 这不删除! 我调试了代码,’rows’的值等于1,所以行应该被删除了。 但是我回到我的应用程序,事件仍然存在。 有趣的是:我已经检查了手机中的日历应用程序,并且该事件不存在。 所以它已被删除(?)。 我想也许我不刷新我的应用程序,所以我关闭它,重新安装它,它永远不会删除。 […]

Swing:如何实现从子组件到父容器的所有事件的转发?

我正在寻找一种直接的方法来使Swing组件将所有收到的事件转发到其父容器 (甚至是所有父级到root)。 编辑 : 我在哪里需要这个? 我有一个图表编辑器。 组件必须转发按键和鼠标单击(一旦用户单击该组件的子元素,就将其自身设置为“活动”)。 首先,让我提出我现有的解决方案。 这是一个解决方法。 public interface IUiAction { void perform(Component c); } public static void performRecursiveUiAction(Container parent, IUiAction action) { if (parent == null) { return; } for (Component c : parent.getComponents()) { if (c != null) { action.perform(c); } } for (Component c : parent.getComponents()) { if (c instanceof […]

在javaswing上从子框架管理父框架

我有一个jframe(父),它创建一个输入框架(子),我得到一些参数。 在“子”框架中,我有“确定”和“取消”按钮。 按下“确定”按钮时,需要使用新数据更新父框架。 最好的方法是什么?

Java中的异步事件调度

我正在将一个C#程序移植到Java中,它大量使用委托和委托的BeginInvoke方法来异步通知事件。 以数据通信线程为例。 它可能必须通知另一个工作线程的状态以及GUI。 在我看来,通知不同类的各种事件的最佳方式是有一个IClassNameHereWatcher接口,它定义了“发布”事件需要通知的所有类型的事件,然后是需要的每个类。监听将实现此接口并将自己注册为侦听器。 我不太确定的是如何使这个异步。 这是我所指的大概: public interface IFrobWatcher { void frobDidSomething(); void frobReceivedData(object data); } public class Frob implements Runnable { List watchers = new ArrayList(); private void run() { while (true) { // Long running task if (blah) notifyWeDidSomething(); notifyOfData(someDataObject); } } public void addWatcher(IFrobWatcher watcher) { watchers.Add(watcher); } private void notifyWeDidSomething() { […]

检查线是否需要EDT?

我有一个用Swing实现的UI。 一个组件做了一些可能需要一些时间的工作,所以我使用SwingUtilities.invokeLater 。 但是,我正在阅读一些旧代码并在ActionListener找到它: if (!SwingUtilities.isEventDispatchThread()) { SwingUtilities.invokeLater(new Runnable() { public void run() { // code X } }); } else { // code X } 我认为这是有道理的,因为它将code X与EDT分开。 但是,我发现它很容易出错,因为我已经使用了几次,而且两次都忘记了else部分。 问题是:是否需要检查SwingUtilities.isEventDispatchThread() ? 或者我可以假设我不在EDT并且总是使用invokeLater ? 非常感谢。

如何在Java中实现类似于C#的语言级事件

C#具有语言级别的事件概念,使用保留关键字event和delegate来定义发布者和订阅者方法。 有人问过Java是否有本机支持,但答案显然是否定的。 有几种选择 ,包括使用AWT / Swing样式事件,构建我自己的Observer模式或使用其他发布/订阅方式。 这是可能的,但正如一个答案所说,“只需要更多的腿部工作。” 通常,任何实现都遵循相同的类型方法并且可以是自动化的。 Java具有不同的元编程机制,例如AOP或AST转换。 如何在Java中实现C#事件以允许尽可能少的“legwork”? 也许Project Lombok ?

Swing:如何创建事件并将它们分发给组件?

我需要将一些事件发送到Swing中的组件,因此它就像任何用户生成的标准Swing事件一样处理。 基本上,类似于宏录制器,然后是JEditorPane的执行器。 但我需要更多地控制生成的事件。 所以,假设我有一个编辑器,我想: 捕获发送给它的所有事件,此时,我可以将它们存储在列表,磁盘或任何内容中。 以后能够播放这些活动 理想情况是允许用户编辑包含以下内容的命令: “键入键A,选择行,删除选择,向上光标,行开始…”

JavaFX中Event consume的含义是什么?

我试图理解JavaFX中的事件处理,在那里我发现了这一行。 路径可以修改为路径上的事件filter和事件处理程序处理事件。 此外,如果事件filter或事件处理程序在任何时候消耗该事件,则初始路由上的某些节点可能不会接收该事件。 你能解释一下事件消耗的意义吗?

如果没有显式调用’actionPerformed’方法怎么调用呢?

我刚开始用Swing学习GUI,并且不完全理解actionPerformed方法的工作原理。 请考虑以下代码: //code to create a button and change its text when clicked public class simplegui implements ActionListener { JButton button; public static void main(String[] args) { simplegui gui=new simplegui(); gui.go(); } public void go() { JFrame frame=new Frame(); button=new JButton(“click Me”); button.addActionListener(this); frame.getContentPane().add(button); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300,300); frame.setVisible(true); } public void actionPerformed(ActionEvent event) { button.setText(“I’ve been […]