弹出消息框



我不确定如何在我的方法中编码弹出消息框。

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对话框的详细描述,请参阅:code.makery的JavaFX对话框(官方(。它们比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和TaskJavafx。

要使用此方法,请调用:

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

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

首先必须导入:导入javax.swing.JOptionPane然后你可以用这个来称呼它:

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

空字符将其置于屏幕中间。在警告信息下面加上引号。标题显然就是标题,最后一部分会将其格式化为错误消息。如果您想要一条常规消息,只需将其替换为PLAIN_MESSAGE即可。它在很多方面都很有效,主要是针对错误。

我在调试时使用了一些"增强功能",尤其是在运行项目时(即不处于调试模式(。

  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

干杯。基思。

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");
            }
}
JOptionPane.showMessageDialog(btn1, "you are clicked save button","title of dialog",2);

btn1是一个JButton变量,它在该对话框中用于对话框打开位置btn1或文本字段等,默认情况下使用框架的空位置。下一个是您的消息,下一个则是对话框的标题。2个报警类型图标3是信息1、2、3、4。好的,我希望你能理解

好的,所以基本上我认为我有一个简单有效的解决方案。

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

使用以下库:import javax.swing.JOptionPane;

在代码行顶部输入。你必须只添加这个,因为其他事情都做对了!

相关内容

  • 没有找到相关文章