弹出消息框

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

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);
669600 次浏览

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字符串来描述调用方框的代码位置,这样一来,如果它变得烦人,我可以很容易地追踪和删除用 infoBox 发送垃圾邮件给我屏幕的代码。

使用此方法调用:

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

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 应用程序线程调用这个方法。如果你有另一个线程正在工作,这需要一个对话框,然后看看这些问答: JavaFX2: 我可以暂停后台任务/服务吗?运行程序和任务 Javafx

使用此方法调用:

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

空值把它放在屏幕的中间。在警告信息下加引号。Title 显然是 Title,最后一部分将像错误消息一样格式化它。如果你想要一个常规的消息,只是替换为 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();
    
    
    }
    

The full class also has debug and warning methods, but I cut them for brevity and you get the main points anyway. You can use a public static boolean isDebugEnabled to suppress debug messages. If done properly the optimizer will (almost) remove these method calls from your production code. See: http://c2.com/cgi/wiki?ConditionalCompilationInJava

Cheers. Keith.

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

Btn1是一个 JButton 变量,它在这个对话框中用于对话框打开 btn1或 textfield 等,默认情况下使用 frame.next 你的消息和下一个是对话框的标题。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;

代码行顶部的输入。 您必须只添加这个,因为其他事情都做得很正确!

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