Всплывающие окна сообщения - PullRequest
62 голосов
/ 16 августа 2011

Я не уверен, как закодировать всплывающее окно сообщения в моих методах.

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

Ответы [ 8 ]

135 голосов
/ 21 сентября 2011

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");
27 голосов
/ 10 марта 2013

сначала вам нужно импортировать: import javax.swing.JOptionPane; , затем вы можете вызвать его следующим образом:

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

значение NULL помещает его в середину экрана.Поместите все, что в кавычках под сообщением с предупреждением.Заголовок - это, очевидно, заголовок, а последняя часть отформатирует его как сообщение об ошибке.если вам нужно обычное сообщение, просто замените его на PLAIN_MESSAGE.во многих случаях он работает довольно хорошо, в основном из-за ошибок.

6 голосов
/ 11 августа 2013

Пара «улучшений», которые я использую для отладки, особенно при запуске проектов (т.е. не в режиме отладки).

  1. По умолчанию в заголовке окна сообщения указывается имя вызывающего метода. Это удобно для остановки потока в данной точке, но его необходимо очистить перед выпуском.
  2. Автоматически копировать имя абонента и сообщение в буфер обмена, потому что вы не можете искать изображение!

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

Полный класс также имеет методы отладки и предупреждения, но я сократил их для краткости, и вы все равно получите основные моменты. Вы можете использовать публичный статический логический isDebugEnabled для подавления сообщений отладки. Если все сделано правильно, оптимизатор (почти) удалит эти вызовы методов из вашего рабочего кода. Смотри: http://c2.com/cgi/wiki?ConditionalCompilationInJava

Приветствия. Кит.

1 голос
/ 04 мая 2017
JOptionPane.showMessageDialog(btn1, "you are clicked save button","title of dialog",2);

btn1 - это переменная JButton, которая используется в этом диалоговом окне для открытия открытой позиции btn1 или текстового поля и т. Д., По умолчанию используется нулевая позиция фрейма. Далее следует ваше сообщение, а следующим является заголовок диалога. 2 номера типа предупреждения значок 3 - информация 1,2,3,4. Хорошо, я надеюсь, вы понимаете это

0 голосов
/ 25 января 2019
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 голосов
/ 18 июля 2018

Используйте следующую библиотеку: import javax.swing.JOptionPane;

Ввод в верхней части строки кода.Вы должны только добавить это, потому что все остальное сделано правильно!

0 голосов
/ 08 мая 2018

POP UP WINDOWS В APPLET

Привет, ребята, я искал всплывающие окна в апплете по всему Интернету, но не смог найти ответ для окон.

Хотя это просто, я просто помогаю тебе. Надеюсь, вам понравится, как это в самой простой форме. вот код:

Имя файла: PopUpWindow.java для java-файла, и нам тоже нужен html-файл.

Для апплета возьмем его popup.html

КОД:

import java.awt.*;

import java.applet.*;

import java.awt.event.*;

public class PopUpWindow extends Applet{

public void init(){

Button open = new Button("open window");

add(open);

Button close = new Button("close window");

add(close);

 Frame f = new Frame("pupup win");

  f.setSize(200,200);




 open.addActionListener(new ActionListener() {

                 public void actionPerformed(ActionEvent e) {
                     if(!f.isShowing()) {
                         f.setVisible(true);
                     }


                 }

              });
 close.addActionListener(new ActionListener() {

                 public void actionPerformed(ActionEvent e) {
                     if(f.isShowing()) {
                        f.setVisible(false);
                     }

                 }

              });

 }

}




/*
<html>

<body>

<APPLET CODE="PopUpWindow" width="" height="">

</APPLET>

</body>

</html>

*/


to run:
$javac PopUpWindow.java && appletviewer popup.html
0 голосов
/ 13 августа 2017

Хорошо, ТАК В принципе, я думаю, что у меня есть простое и эффективное решение.

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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...