javax.swing.JOptionPane
这里是我调用的方法的代码每当我想要一个信息框弹出,它hogs屏幕,直到它被接受:
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,并且该对话框将出现在该组件的中心。
我倾向于使用titleBar字符串来描述在代码中的盒子是从哪里被调用,那种方式,如果它变得烦人,我可以很容易地跟踪和删除负责使用infoBoxes的垃圾邮件我的屏幕的代码。
要使用此方法调用:
ClassNameHere.infoBox("YOUR INFORMATION HERE", "TITLE BAR MESSAGE");
javafx.scene.control.Alert
有关如何使用JavaFX对话框的深入描述,请参阅:JavaFX Dialogs (official) by code.makery。它们比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 Q& A:JavaFX2: Can I pause a background Task / Service?和Platform.Runlater and Task Javafx。
要使用此方法调用:
ClassNameHere.infoBox("YOUR INFORMATION HERE", "TITLE BAR MESSAGE");
要么
ClassNameHere.infoBox("YOUR INFORMATION HERE", "TITLE BAR MESSAGE", "HEADER MESSAGE");