it-swarm.com.de

Popup-Meldungsfelder

Ich bin nicht sicher, wie Popup-Meldungsfeld in meinen Methoden codiert wird.

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;
}

Ich habe versucht, JOptionPane in meiner Methode zu verwenden, aber es funktioniert nicht:

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

javax.swing.JOptionPane

Hier ist der Code für eine Methode, die ich anrufe, wenn ein Informationsfeld angezeigt werden soll. Der Bildschirm wird so lange angezeigt, bis er akzeptiert wird:

import javax.swing.JOptionPane;

public class ClassNameHere
{

    public static void infoBox(String infoMessage, String titleBar)
    {
        JOptionPane.showMessageDialog(null, infoMessage, "InfoBox: " + titleBar, JOptionPane.INFORMATION_MESSAGE);
    }
}

Der erste JOptionPane-Parameter (in diesem Beispiel null) wird verwendet, um den Dialog auszurichten. null bewirkt, dass es sich auf dem Bildschirm zentriert, es kann jedoch ein beliebiger Java.awt.Component angegeben werden, und das Dialogfeld wird stattdessen in der Mitte der Component angezeigt.

Ich neige dazu, titleBar String zu verwenden, um zu beschreiben, von wo aus die Box aufgerufen wird. Auf diese Weise kann ich den Code, der für das Spammen meines Bildschirms mit infoBoxes verantwortlich ist, leicht aufspüren und löschen.

So verwenden Sie diesen Methodenaufruf:

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

javafx.scene.control.Alert

Eine ausführliche Beschreibung der Verwendung von JavaFX-Dialogen finden Sie unter: JavaFX-Dialoge (offiziell) by code.makery. Sie sind viel leistungsfähiger und flexibler als Swing-Dialoge und können weit mehr als nur das Aufrufen von Nachrichten.

Wie oben beschrieben, gebe ich ein kleines Beispiel, wie Sie JavaFX-Dialoge verwenden können, um dasselbe Ergebnis zu erzielen

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();
    }
}

Dabei ist zu beachten, dass JavaFX ein GUI-Toolkit mit einem einzelnen Thread ist. Dies bedeutet, dass diese Methode direkt vom JavaFX-Anwendungsthread aus aufgerufen werden sollte. Wenn Sie einen anderen Thread haben, der Arbeit hat und der einen Dialog benötigt, dann sehen Sie diese SO Q & As: JavaFX2: Kann ich eine Hintergrund-Task/einen Service anhalten? und Platform.Runlater und Task Javafx .

So verwenden Sie diesen Methodenaufruf:

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

oder

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

zuerst müssen Sie importieren: import javax.swing.JOptionPane; Dann können Sie es mit folgendem Befehl aufrufen:

JOptionPane.showMessageDialog(null, 
                              "ALERT MESSAGE", 
                              "TITLE", 
                              JOptionPane.WARNING_MESSAGE);

die Null stellt sie in die Mitte des Bildschirms. setzen Sie alles in Anführungszeichen unter Warnmeldung. Titel ist offensichtlich Titel und der letzte Teil formatiert ihn wie eine Fehlermeldung. Wenn Sie eine normale Nachricht wünschen, ersetzen Sie sie einfach durch PLAIN_MESSAGE. es funktioniert in vielerlei Hinsicht ziemlich gut, meistens für Fehler.

23
Brendan Cronan

Ein paar "Verbesserungen" verwende ich zum Debuggen, insbesondere beim Ausführen von Projekten (dh nicht im Debug-Modus).

  1. Setzen Sie den Titel der Meldungsbox auf den Namen der aufrufenden Methode. Dies ist praktisch, um einen Thread an einem bestimmten Punkt zu stoppen, muss aber vor der Freigabe bereinigt werden.
  2. Kopieren Sie automatisch den Anrufernamen und die Nachricht in die Zwischenablage, da Sie kein Bild suchen können!

    package forumposts;
    
    import Java.awt.Toolkit;
    import Java.awt.datatransfer.Clipboard;
    import Java.awt.datatransfer.StringSelection;
    import javax.swing.JOptionPane;
    
    public final class MsgBox
    {
        public static void info(String message) {
            info(message, theNameOfTheMethodThatCalledMe());
        }
        public static void info(String message, String caller) {
            show(message, caller, JOptionPane.INFORMATION_MESSAGE);
        }
    
        static void error(String message) {
            error(message, theNameOfTheMethodThatCalledMe());
        }
        public static void error(String message, String caller) {
            show(message, caller, JOptionPane.ERROR_MESSAGE);
        }
    
        public static void show(String message, String title, int iconId) {
            setClipboard(title+":"+NEW_LINE+message);
            JOptionPane.showMessageDialog(null, message, title, iconId);
        }
        private static final String NEW_LINE = System.lineSeparator();
    
        public static String theNameOfTheMethodThatCalledMe() {
            return Thread.currentThread().getStackTrace()[3].getMethodName();
        }
    
        public static void setClipboard(String message) {
            CLIPBOARD.setContents(new StringSelection(message), null);
            // nb: we don't respond to the "your content was splattered"
            //     event, so it's OK to pass a null owner.
        }
        private static final Toolkit AWT_TOOLKIT = Toolkit.getDefaultToolkit();
        private static final Clipboard CLIPBOARD = AWT_TOOLKIT.getSystemClipboard();
    
    }
    

Die gesamte Klasse verfügt auch über Debug- und Warnmethoden, aber ich schneide sie der Kürze halber und Sie erhalten die wichtigsten Punkte trotzdem. Sie können ein öffentliches statisches boolean isDebugEnabled verwenden, um Debugmeldungen zu unterdrücken. Wenn dies ordnungsgemäß durchgeführt wird, entfernt das Optimierungsprogramm (fast) diese Methodenaufrufe aus Ihrem Produktionscode. Siehe: http://c2.com/cgi/wiki?ConditionalCompilationInJava

Prost. Keith.

5
corlettk
JOptionPane.showMessageDialog(btn1, "you are clicked save button","title of dialog",2);

btn1 ist eine JButton-Variable und wird in diesem Dialogfeld verwendet, um die geöffnete Position btn1 oder das Textfeld usw. zu öffnen. Standardmäßig verwenden Sie die Null-Position des Frames.next, und Ihre Nachricht ist der Titel des Dialogs. 2 Zahlen des Alarmtyps Symbol 3 sind die Informationen 1,2,3,4 . Ok, ich hoffe, Sie verstehen es

1
Saquib Azam

Ok, SO Grundsätzlich denke ich, dass ich eine einfache und effektive Lösung habe.

package AnotherPopUpMessage;
import javax.swing.JOptionPane;
public class AnotherPopUp {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        JOptionPane.showMessageDialog(null, "Again? Where do all these come from?", 
            "PopUp4", JOptionPane.CLOSED_OPTION);
    }
}
0
NinjaFangGames

Verwenden Sie die folgende Bibliothek: import javax.swing.JOptionPane;

Eingabe oben in der Codezeile ..__ Sie müssen dies nur hinzufügen, da die anderen Dinge korrekt ausgeführt werden!

0
Abel Nebay
import javax.swing.*;
class Demo extends JFrame
{
           String str1;
           Demo(String s1)
           {
             str1=s1;
            JOptionPane.showMessageDialog(null,"your message : "+str1);
            }
            public static void main (String ar[])
            {
             new Demo("Java");
            }
}
0
Rohit Ramtirthe