gpt4 book ai didi

java - 从 GUI 代码外部请求用户输入,在这种情况下我是否需要事件或操作来与 GUI 通信?

转载 作者:行者123 更新时间:2023-11-30 06:32:17 25 4
gpt4 key购买 nike

我正在编写一个 2D 多边形和物理编辑器,其中一个功能是为关节设置旋转限制。

要使用此功能,用户在需要接收限制的关节点之间单击并拖动一条线。

确定选择是否有效的逻辑发生在 GUI 代码之外。

如果找到一个选择,我想弹出一个 JOptionPane.showInputDialog,用户可以在其中输入限制。

问题是,如果我直接这样做,程序会变得无响应,我认为这是因为线程。

有没有一种方法可以定义 GUI 可以使用的不需要实际 GUI 组件的事件监听器?

我想发送一个事件,该事件也包含对目标对象的引用到该组件,然后告诉它已经进行了有效选择并且需要用户输入,然后通过目标的方法发回值对象。

我对 Swing 非常缺乏经验。我的预感是我可以将 ActionListener 添加到主窗口,但我不知道如何专门处理该监听器。比如,我需要如何定义仅由该特定监听器处理的 Action?当然,如果这真的可能的话。

到目前为止,我只使用监听器让 GUI 与逻辑对话,而不是相反......

编辑:该程序变得无响应我称之为运动 result = JOptionPane.showInputDialog(this,"输入限制。");

这就打破了它。甚至无法在文本框中输入任何内容,也无法将其关闭等。

我认为这是因为它产生了一个暂停某些线程的模态对话框,并且从非 GUI 代码内部的某个地方调用它不是我应该做的事情,但我太缺乏经验不知道另一种方式.. .

编辑2:我应该补充一点,如果我生成它,我可以毫无问题地使用 JOptionPane.showInputDialog,例如,在单击按钮或选择弹出菜单选项之后。事实上,这就是我重命名我正在使用的项目的方式。

但我假设此时,对话框是在 GUI 线程或事件调度程序队列中生成的。

但问题是,这需要可见的交互式 GUI 组件来触发该事件。然而,我想要的是某种组件,它会像单击按钮或上下文菜单一样生成 JOptionPane.showInputDialog ,但不必与用户交互,而是由代码交互。我想我可以使用不可见的按钮并模拟鼠标点击事件,但这很老套...

此外,我尝试生成生成 JOptionPane.showInputDialog 的线程和可运行对象,但这也无济于事。除非我从 GUI 源生成 JOptionPane,否则一切都会停止,对话框将无法工作。

最佳答案

发布者将有一个公共(public)的添加/删除监听器,订阅者将在其中添加自己或通过其他 channel 添加到发布者的 EventListenerList 中。

您可以创建自己的监听器接口(interface),扩展 EventListener 和触发事件的函数。下面是一个例子:

import java.util.EventListener;

public interface MyEventListener extends EventListener {
public void myEventOccurred(MyEvent event);
}

然后您可以创建自定义事件类,如上例中的“MyEvent”:

import java.util.EventObject;

public class MyEvent extends EventObject {
// customer fields and methods here
public MyEvent(Object source) //more possible args here {
super(source);
//other things here to do what you want
}
}

现在您可以让订阅者实现 MyEventListener 并覆盖 myEventOccurred(..) 方法。

关于java - 从 GUI 代码外部请求用户输入,在这种情况下我是否需要事件或操作来与 GUI 通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8916790/

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