Java 如何从gui(jframe)调用此代码
我想从actionlistener的窗口给你打电话Java 如何从gui(jframe)调用此代码,java,swing,djnativeswing,Java,Swing,Djnativeswing,我想从actionlistener的窗口给你打电话 public class YouTubeViewer { public YouTubeViewer(){ NativeInterface.open(); SwingUtilities.invokeLater(new Runnable() { public void run() { JFrame frame = new JFrame("YouTube Viewer");
public class YouTubeViewer {
public YouTubeViewer(){
NativeInterface.open();
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame("YouTube Viewer");
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.getContentPane().add(getBrowserPanel(), BorderLayout.CENTER);
frame.setSize(800, 600);
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
});
NativeInterface.runEventPump();
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
@Override
public void run() {
NativeInterface.close();
}
}));
}
public JPanel getBrowserPanel() {
JPanel webBrowserPanel = new JPanel(new BorderLayout());
JWebBrowser webBrowser = new JWebBrowser();
webBrowserPanel.add(webBrowser, BorderLayout.CENTER);
webBrowser.setBarsVisible(false);
webBrowser.navigate("www.youtube.com/embed/sKeCX98U29M");
return webBrowserPanel;
}
}
jframe示例(用于测试)
YouTubeViewer包含DJ本机Swing api库的类
如果我直接通过main函数调用,它会工作。但是如果我从actionlistener调用,它会在我按下它时停止响应~我想这是运行问题的问题~如何解决?有什么想法吗?谢谢
有什么想法吗 您的代码会阻止EDT(NativeInterface.runEventPump();
)。所以你应该用不同的思路来做
public void actionPerformed(ActionEvent actionEvent)
{
Thread t = new Thread(new Runnable() {
public void run() {
YouTubeViewer a = new YouTubeViewer();
}
});
t.start();
}
public void actionPerformed(ActionEvent actionEvent)
{
Thread t = new Thread(new Runnable() {
public void run() {
YouTubeViewer a = new YouTubeViewer();
}
});
t.start();
}