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
, чтобы описать, откуда в коде вызывается ящик, поэтому, если он раздражает, я могу легко отследить и удалить код, отвечающий за спам на моем экране, с помощью информационных ящиков.
Чтобы использовать этот вызов метода:
ClassNameHere.infoBox("YOUR INFORMATION HERE", "TITLE BAR MESSAGE");
javafx.scene.control.Alert
Подробное описание использования диалогов JavaFX см .: Диалоги JavaFX (официальные) от 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. Если у вас есть другой поток, выполняющий работу, для которого требуется диалоговое окно, посмотрите следующие вопросы и ответы: JavaFX2: можно ли приостановить фоновую задачу / службу? и Platform.Runlater и задачу Javafx .
Чтобы использовать этот вызов метода:
ClassNameHere.infoBox("YOUR INFORMATION HERE", "TITLE BAR MESSAGE");
или
ClassNameHere.infoBox("YOUR INFORMATION HERE", "TITLE BAR MESSAGE", "HEADER MESSAGE");