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
我倾向于使用String来描述从代码中调用框的位置,这样,如果它变得烦人,我可以轻松跟踪并删除负责用infoBox发送垃圾邮件的代码。titleBar
要使用此方法,请调用:
ClassNameHere.infoBox("YOUR INFORMATION HERE", "TITLE BAR MESSAGE");
javafx.scene.control.Alert
有关如何使用 JavaFX 对话框的深入描述,请参阅 code.makery 的 JavaFX Dialogs (official)。它们比 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)
{
/* By specifying a null headerMessage String, we cause the dialog to
not have a header */
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");