我想在单击菜单时发送电子邮件。
MenuItem sendmail= new MenuItem("Send E-Mail");
sendmail.setOnAction(new EventHandler<ActionEvent>()
{
@Override
public void handle(ActionEvent e)
{
// Call E-mail Client
}
});
你能告诉我如何从这段代码调用安装在用户 PC 上的电子邮件客户端吗?
最佳答案
这没有记录,但似乎有效,并且是一个“纯 FX”解决方案,而不是依赖于 java.awt API 或知道外部可执行文件的位置。调用Application.getHostServices().showDocument(...)
方法并传入一个mailto: url 作为url:
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;
public class OpenDefaultBrowser extends Application {
@Override
public void start(Stage primaryStage) {
final HBox root = new HBox(5);
final TextField textField = new TextField("help@example.com");
final Button goButton = new Button("Mail");
EventHandler<ActionEvent> goHandler = new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
getHostServices().showDocument("mailto:"+textField.getText());
}
};
textField.setOnAction(goHandler);
goButton.setOnAction(goHandler);
root.getChildren().addAll(textField, goButton);
final Scene scene = new Scene(root, 250, 150);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
关于java - 从 setOnAction 启动电子邮件客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21651600/