1. ホーム
  2. java

ポップアップ メッセージボックス

2023-11-28 13:19:47

質問

私のメソッドでポップアップメッセージボックスをどのようにコード化するか迷っています。

public String verify(){
    String result = "failed";
    int authcode = staffBean.getVerifyCodeByName(getLoginUserName());

    if (code == authcode){       
        result ="success";
    }    
    else{ //statement to popup an error message box

    }
    return result;
}

を使ってみました。 JOptionPane を使おうとしましたが、うまくいきません。

String st = "Welcome";
JOptionPane.showMessageDialog(null, st);

どのように解決するのですか?

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アプリケーションスレッドから直接呼び出されるべきであるということです。ダイアログを必要とする別のスレッドで作業している場合は、以下のSO Q&Aを参照してください。 JavaFX2: バックグラウンドタスク/サービスを一時停止できますか? そして Platform.RunlaterとタスクJavafx .

このメソッドを使用するには、呼び出します。

ClassNameHere.infoBox("YOUR INFORMATION HERE", "TITLE BAR MESSAGE");

または

ClassNameHere.infoBox("YOUR INFORMATION HERE", "TITLE BAR MESSAGE", "HEADER MESSAGE");