[英]non-static method getDeviceList() cannot be referenced from a static context
[英]non-static method getHostServices() cannot be referenced from a static context
我有这个调用电子邮件客户端的JavaFX代码
MenuItem ri = new MenuItem("Report Issue");
// Start E-Mail Client with E-Mail template and send E-Mail
ri.setOnAction(new EventHandler<ActionEvent>()
{
@Override
public void handle(ActionEvent e)
{
Application.getHostServices().showDocument("mailto:"+textField.getText());
}
});
我在Netbeans non-static method getHostServices() cannot be referenced from a static context
获取消息non-static method getHostServices() cannot be referenced from a static context
你能告诉我怎么解决这个问题吗?
PS这是我可以创建的解决方案:
ri.setOnAction(new EventHandler<ActionEvent>()
{
@Override
public void handle(ActionEvent e)
{
Application a = new Application() {
@Override
public void start(Stage stage)
{
}
};
final TextField textField = new TextField("help@example.com");
a.getHostServices().showDocument("mailto:"+textField.getText());
}
});
有更好的建议吗?
看起来像getHostServices()不是Application类或其子类中定义的静态方法。
我以这种方式使用代码:
public class App extends Application {
private static App mInstance;
public static void main(String[] args) throws Exception { launch(args); }
public static App getInstance() {
return mInstance;
}
@Override
public void start(Stage primaryStage) throws Exception {
// your code
}
}
你可以在你的应用程序中的任何地方得到它
HostServices services = App.getInstance().getHostServices();
services.showDocument(url);
最好的方法是实例化您的Application类以在非静态上下文中使用该方法:
应用a = new Application();
。a.getHostServices()showDocument( “电子邮件地址:” + textField.getText());
或者如果要在静态上下文中运行此程序,请更改getHostServices()方法:
public void getHostServices(){...}
喜欢的东西
public static void getHostServices(){...}
(编辑)詹姆斯指出我的回答是FX的无稽之谈; 你不能修改应用程序,并且实例化没有任何意义。 如果您的程序扩展了Application,那么尝试简单地删除“Application”。 从您的第一个代码开始,因为您的程序继承了getHostServices()方法。
如果它适合您的设计,那么可以使getHostServices成为静态方法,或者安排从非静态方法或块中调用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.