我在oracle网站上找到了这个代码,但是我无法用Eclipse启动它说我"无法启动"。我已经安装了JDK 8但它没有工作......
有人有解决方案吗? :P
public class SwingFX extends Application {
@Override
public void start (Stage stage) {
final SwingNode swingNode = new SwingNode();
createSwingContent(swingNode);
StackPane pane = new StackPane();
pane.getChildren().add(swingNode);
stage.setTitle("Swing in JavaFX");
stage.setScene(new Scene(pane, 250, 150));
stage.show();
}
private void createSwingContent(final SwingNode swingNode) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
swingNode.setContent(new JButton("Click me!"));
}
});
}
}
链接到我找到代码的网站:https://docs.oracle.com/javafx/8/embed_swing/jfxpub-embed_swing.htm
答案 0 :(得分:5)
在Java 8中,即使它没有javafx.application.Application
方法,也可以直接启动main(String[] args)
子类。问题是当前版本的Eclipse没有检查这一点,并且(至少在上下文菜单中)仅检查main(...)
方法是否存在。因此,要允许它从Eclipse运行,您可以自己添加main(...)
方法:
public class SwingFX extends Application {
@Override
public void start(Stage stage) {
// ...
}
public static void main(String[] args) {
launch(args);
}
}
或者,您可以直接指示Eclipse从"运行配置"运行它。向导。选择SwingFX
课程后,选择"运行"从菜单中,然后"运行配置"。在" Main"选项卡确保显示正确的班级名称(即" SwingFX"),然后按"运行"按钮。
一旦你设置了它,绿色"运行"工具栏上的按钮(在Java透视图中)将再次运行应用程序,直到您运行其他内容。
答案 1 :(得分:2)
Eclipse在检测到JavaFX应用程序可以在Java 8中没有main
方法的情况下启动时出现问题 - 解决方法是自己添加
public static void main(String[] args) {
launch(args);
}
答案 2 :(得分:0)
你还没有写过主要的方法。因此JVM不知道起点