我有一个Java Swing应用程序和一个JInternalFrame。
在JInternalFrame中,我有一些输入字段,当我按下热键时,我希望发生以下情况:
如果可能的话,我希望 inputFrame 是一个 JInternalFrame,但这不是一个主要问题。
有人知道实现这一点的方法吗?
我在JOptionPane的源代码中找到了答案,我复制了两个静态方法createInternalFrame和startModal(只有一些小的更改),并在下面创建了自己的类:
public class ModalInternalPanel {
public static Object showInternalDialog(Component parentComponent, Container container, HasReturnValue hasReturnValue, String title) {
JInternalFrame frame = createInternalFrame(parentComponent, title, container);
startModal(frame);
if (hasReturnValue!=null) return hasReturnValue.getReturnValue(); else return null;
}
public static JInternalFrame createInternalFrame(Component parentComponent, String title, Container container) throws RuntimeException {
// Try to find a JDesktopPane.
JLayeredPane toUse = JOptionPane.getDesktopPaneForComponent(parentComponent);
// If we don't have a JDesktopPane, we try to find a JLayeredPane.
if (toUse == null) toUse = JLayeredPane.getLayeredPaneAbove(parentComponent);
// If this still fails, we throw a RuntimeException.
if (toUse == null) throw new RuntimeException ("parentComponent does not have a valid parent");
JInternalFrame frame = new JInternalFrame(title);
frame.setContentPane(container);
frame.setClosable(true);
toUse.add(frame);
frame.setLayer(JLayeredPane.MODAL_LAYER);
frame.pack();
frame.setVisible(true);
return frame;
}
private static void startModal(JInternalFrame f) {
// We need to add an additional glasspane-like component directly
// below the frame, which intercepts all mouse events that are not
// directed at the frame itself.
JPanel modalInterceptor = new JPanel();
modalInterceptor.setOpaque(false);
JLayeredPane lp = JLayeredPane.getLayeredPaneAbove(f);
lp.setLayer(modalInterceptor, JLayeredPane.MODAL_LAYER.intValue());
modalInterceptor.setBounds(0, 0, lp.getWidth(), lp.getHeight());
modalInterceptor.addMouseListener(new MouseAdapter(){});
modalInterceptor.addMouseMotionListener(new MouseMotionAdapter(){});
lp.add(modalInterceptor);
f.toFront();
// We need to explicitly dispatch events when we are blocking the event
// dispatch thread.
EventQueue queue = Toolkit.getDefaultToolkit().getSystemEventQueue();
try {
while (! f.isClosed()) {
if (EventQueue.isDispatchThread()) {
// The getNextEventMethod() issues wait() when no
// event is available, so we don't need do explicitly wait().
AWTEvent ev = queue.getNextEvent();
// This mimics EventQueue.dispatchEvent(). We can't use
// EventQueue.dispatchEvent() directly, because it is
// protected, unfortunately.
if (ev instanceof ActiveEvent) ((ActiveEvent) ev).dispatch();
else if (ev.getSource() instanceof Component) ((Component) ev.getSource()).dispatchEvent(ev);
else if (ev.getSource() instanceof MenuComponent) ((MenuComponent) ev.getSource()).dispatchEvent(ev);
// Other events are ignored as per spec in
// EventQueue.dispatchEvent
} else {
// Give other threads a chance to become active.
Thread.yield();
}
}
}
catch (InterruptedException ex) {
// If we get interrupted, then leave the modal state.
}
finally {
// Clean up the modal interceptor.
lp.remove(modalInterceptor);
// Remove the internal frame from its parent, so it is no longer
// lurking around and clogging memory.
Container parent = f.getParent();
if (parent != null) parent.remove(f);
}
}
}
查看如何使用内部框架,并在showInternal
上搜索。答案就在这里。
问题内容: 我如何使这个小功能“ imageExists”返回ajax请求是否成功? 问题答案: 我相信您将必须使用同步模式并使用单独的变量来存储返回值。
问题内容: 这个问题已经在这里有了答案 : 如何从异步调用返回响应? (39个答案) 7年前关闭。 我想创建一个JavaScript函数,该函数返回jQuery AJAX调用的值。我想要这样的东西。 我知道我可以通过将async设置为false来做到这一点,但我宁愿不这样做。 问题答案: 使用jQuery 1.5,您可以使用全新的功能,正是为此目的而设计的。 资源
问题内容: 我正在使用Postgresql 8.3,并具有以下简单功能,该功能会将a返回 给客户端 现在,我可以使用以下SQL命令来调用此函数并操纵返回的游标,但是游标名称是由PostgreSQL自动生成的 此外,如38.7.3.5中所述,显式地将游标名称声明为函数的输入参数 。返回游标。我可以声明自己的游标名称并使用此游标名称来操纵返回的游标,而不是为我自动生成的Postgresql吗?如果不是
问题内容: 我有一些jQuery代码。我已经调用了一个Ajax函数文件file.php,其中包含一些字段,例如: 我会再次分配给jQuery函数吗?如果是这样,我该怎么办?我附上了一个示例文件: 问题答案: 该函数采用一个参数,其中包含获取的数据。因此,在您的示例中: 更多示例在jQuery文档中。
问题内容: 我对AngularJS相当陌生,并且从模态对话框服务返回数据时遇到问题。基本上,我复制了Dan Wahlin的服务http://weblogs.asp.net/dwahlin/archive/2013/09/18/building-an- angularjs-modal- service.aspx, 并从我的控制器调用它。 然后我有我的部分,像这样: 这个模态被这样调用: 所以我的问题
我找到了一些很好的SO链接(如何从异步回调函数返回值?以及从node.js中的回调函数返回值等),但它们并不是不能为我的问题提供解决方案。 我的问题:能够得到异步调用的结果,但我如何使用这个结果返回我的函数? 这里获取callBackResponse的值为true或false,并希望将该值用作: