javax.swing.JOptionPane
这是我想弹出一个信息框时所调用的方法的代码,它将占据屏幕,直到被接受为止:
import javax.swing.JOptionPane;
public class ClassNameHere
{
public static void infoBox(String infoMessage, String titleBar)
{
JOptionPane.showMessageDialog(null, infoMessage, "InfoBox: " + titleBar, JOptionPane.INFORMATION_MESSAGE);
}
}
第一个JOptionPane
参数(null
在此示例中)用于对齐对话框。null
使其在屏幕上居中,但是java.awt.Component
可以指定任何内容,而对话框将显示在屏幕中央Component
。
我倾向于使用titleBar
String来描述从哪个位置调用该框,那样,如果它变得令人讨厌,我可以轻松地查找并删除负责使用infoBoxes向屏幕发送垃圾邮件的代码。
要使用此方法调用:
ClassNameHere.infoBox("YOUR INFORMATION HERE", "TITLE BAR MESSAGE");
javafx.scene.control.Alert
有关如何使用JavaFX对话框的深入说明,请参见:code.makery的JavaFX对话框(官方)。它们比Swing对话框更强大,更灵活,并且不仅具有弹出消息的功能。
如上所述,我将发布一个小示例,说明如何使用JavaFX对话框实现相同的结果
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.application.Platform;
public class ClassNameHere
{
public static void infoBox(String infoMessage, String titleBar)
{
infoBox(infoMessage, titleBar, null);
}
public static void infoBox(String infoMessage, String titleBar, String headerMessage)
{
Alert alert = new Alert(AlertType.INFORMATION);
alert.setTitle(titleBar);
alert.setHeaderText(headerMessage);
alert.setContentText(infoMessage);
alert.showAndWait();
}
}
要记住的一件事是JavaFX是一个单线程GUI工具箱,这意味着应该直接从JavaFX应用程序线程调用此方法。如果您有另一个线程正在工作,需要对话,请参阅以下SO问答:JavaFX2:我可以暂停后台任务/服务吗?和Platform.Runlater和Task Javafx。
要使用此方法调用:
ClassNameHere.infoBox("YOUR INFORMATION HERE", "TITLE BAR MESSAGE");
要么
ClassNameHere.infoBox("YOUR INFORMATION HERE", "TITLE BAR MESSAGE", "HEADER MESSAGE");