it-swarm.com.ru

Всплывающие сообщения

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

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

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 (официальные) by 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 вопросы и ответы: JavaFX2: можно ли приостановить фоновую задачу/службу? и Platform.Runlater и Task Javafx .

Чтобы использовать этот вызов метода:

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

или же

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

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

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

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

23
Brendan Cronan

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

  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

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

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

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

1
Saquib Azam

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

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

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

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

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