Java Web应用程序中的SwingUtilities.invokeLater

Java Web应用程序中的SwingUtilities.invokeLater,java,swing,Java,Swing,我对web应用程序中swing的本质很好奇。目前我正在使用wicket开发一个web应用程序。我做了一个小测试。我添加了一个链接并编写了以下代码: add(new Link<String>("link", new Model("link")) { @Override public void onClick() { SwingUtilities.invokeLater(new Runnable() { public void r

我对web应用程序中swing的本质很好奇。目前我正在使用wicket开发一个web应用程序。我做了一个小测试。我添加了一个链接并编写了以下代码:

add(new Link<String>("link", new Model("link")) {

    @Override
    public void onClick() {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JFrame frame = new JFrame("Test");
                frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                frame.setBounds(100, 100, 450, 300);
                JPanel contentPane = new JPanel();
                contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
                contentPane.setLayout(new BorderLayout(0, 0));
                frame.setContentPane(contentPane);                          
                frame.setVisible(true);
            }
        });
        }
    }

});
add(新链接(“链接”),新模型(“链接”){
@凌驾
公共void onClick(){
SwingUtilities.invokeLater(新的Runnable(){
公开募捐{
JFrame=新JFrame(“测试”);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
机架立根(100450300);
JPanel contentPane=新的JPanel();
setboorder(新的EmptyBorder(5,5,5,5));
setLayout(新的BorderLayout(0,0));
frame.setContentPane(contentPane);
frame.setVisible(true);
}
});
}
}
});

当我把战争部署到服务器上时。单击链接时,将显示一个UI,该UI在单击“关闭”按钮时关闭。我想知道什么时候从客户端机器上点击链接,这个swing组件会显示什么行为?它将在客户机或服务器中可见。

当然是在客户机上。它将神奇地打开一个曲梁,并在调用之前在客户机上具体化服务器的cpu核心


但是wicket很不错,不是吗?

@Tapas想一想:你只需打开一个网站,点击一个链接,它就会转到服务器,然后以某种方式打开一个
JFrame
JFrame
没有沙盒作为Java小程序,因此它具有完全权限。这是不允许的,而且上面的所有代码都在服务器上运行,因此无论发生什么情况,它都不可能出现在客户机上。Swing用于客户端开发。这不是客户端开发。制作链接嵌入/使用的Java小程序,或者在服务器中部署HTML(首选!)。客户端将只接收html代码(可能是其他内容类型),但客户端不会看到您在服务器端执行的任何swing代码。@pickypg谢谢。我可以扩展JApplet并将其用于web应用程序吗?@Tapas可以,但我想不出最近内存中有哪个站点包含Java小程序。更清楚的是,您不能使用它,因为即使上面使用的是Applet,代码也会尝试使用它。这一切仍将发生在服务器上。您必须部署Applet代码,以便web请求和页面中的引用可以访问它(如果您不想在页面上使用后台JavaScript生成代码,除非单击链接)。我强烈建议你使用不同的机制;最好直接使用HTML和Javascript。@pickypg我的项目需要捕获客户端桌面的屏幕。如果没有小程序,我怎么能用HTML来做呢?上面的代码是一个实验。小程序应该被正确引用。-1:讽刺不会帮助他了解这一点,因为你有一个类似Swing的web编程库,它实际上不是Swing。有时它会帮助他指出错误的观点。世界对他来说肯定不会破裂。