Pop-upberichtvensters

Ik weet niet zeker hoe ik het pop-upberichtvenster in mijn methoden moet coderen.

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

Ik heb geprobeerd JOptionPanein mijn methode te gebruiken, maar het werkt niet:

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

Antwoord 1, autoriteit 100%

javax.swing.JOptionPane

Hier is de code voor een methode die ik aanroep wanneer ik wil dat een informatievenster verschijnt, het houdt het scherm vol totdat het wordt geaccepteerd:

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

De eerste JOptionPaneparameter (nullin dit voorbeeld) wordt gebruikt om het dialoogvenster uit te lijnen. nullzorgt ervoor dat het zichzelf op het scherm centreert, maar elke java.awt.Componentkan worden opgegeven en het dialoogvenster verschijnt in het midden van dat Componentin plaats daarvan.

Ik heb de neiging om de titleBarString te gebruiken om te beschrijven waar in de code de box wordt aangeroepen, op die manier kan ik, als het vervelend wordt, gemakkelijk de code opsporen en verwijderen die verantwoordelijk is voor het spammen van mijn scherm met infoBoxen.

Om deze methode aan te roepen:

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

javafx.scene.control.Alert

Voor een uitgebreide beschrijving van het gebruik van JavaFX-dialogen, zie: JavaFX Dialogs ( officieel)door code.makery. Ze zijn veel krachtiger en flexibeler dan Swing-dialogen en kunnen veel meer dan alleen berichten laten verschijnen.

Zoals hierboven zal ik een klein voorbeeld posten van hoe je JavaFX-dialogen zou kunnen gebruiken om hetzelfde resultaat te bereiken

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

Eén ding om in gedachten te houden is dat JavaFX een GUI-toolkit met één thread is, wat betekent dat deze methode rechtstreeks vanuit de JavaFX-toepassingsthread moet worden aangeroepen. Als je een andere thread hebt die aan het werk is, waarvoor een dialoogvenster nodig is, bekijk dan deze SO Q&As: JavaFX2: kan ik een achtergrondtaak/service onderbreken?en Platform. Runlater en Task Javafx.

Om deze methode aan te roepen:

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

of

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

Antwoord 2, autoriteit 19%

eerst moet je importeren:
javax.swing.JOptionPane importeren;
dan kun je het zo noemen:

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

de null plaatst het in het midden van het scherm. zet wat dan ook tussen aanhalingstekens onder waarschuwingsbericht. Titel is duidelijk titel en het laatste deel zal het opmaken als een foutmelding. als je een normaal bericht wilt, vervang het dan door PLAIN_MESSAGE. het werkt op veel manieren redelijk goed, vooral voor fouten.


Antwoord 3, autoriteit 4%

Een paar “verbeteringen” die ik gebruik voor het opsporen van fouten, vooral bij het uitvoeren van projecten (dwz niet in de foutopsporingsmodus).

  1. Standaard de titel Message-Box op de naam van de oproepmethode. Dit is handig om een ​​draad op een bepaald punt te stoppen, maar moet vóór de vrijlating worden opgeruimd.
  2. Kopieer automatisch de beller-naam en bericht naar het klembord, omdat u geen afbeelding kunt doorzoeken!

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

De volledige klasse heeft ook debug- en waarschuwingsmethoden, maar ik heb ze voor de beknoptheid weggelaten en je krijgt toch de belangrijkste punten. U kunt een openbare statische boolean isDebugEnabled gebruiken om foutopsporingsberichten te onderdrukken. Als het goed wordt gedaan, zal de optimizer deze methodeaanroepen (bijna) uit uw productiecode verwijderen. Zie: http://c2.com/cgi/wiki?ConditionalCompilationInJava

Proost. Keith.


Antwoord 4

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

btn1 is een JButton-variabele en wordt in dit dialoogvenster gebruikt om de positie van het dialoogvenster btn1 of tekstveld enz. te openen. Gebruik standaard de null-positie van het frame. naast uw bericht en de volgende is de titel van het dialoogvenster. 2 cijfers van het type waarschuwingspictogram 3 is de informatie 1,2,3,4.
Oké, ik hoop dat je het begrijpt


Antwoord 5

Ok, DUS Ik denk dat ik een simpele en effectieve oplossing heb.

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

Antwoord 6

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

Antwoord 7

Gebruik de volgende bibliotheek:
import javax.swing.JOptionPane;

Invoer bovenaan de coderegel.
Je moet alleen dit toevoegen, omdat de andere dingen correct zijn gedaan!

Other episodes