I’m using JOptionPane.showMessageDialog(null,e,”Invalid Name”,JOptionPane.ERROR_MESSAGE) method to display the exception extended from Exception class.
But the Pop window is not getting displayed unless and until I press Alt+tab. What can be the reason? Below is the snippet. Suggest me something.
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import java.util.*;
import java.io.*;
class NameInvalidException extends Exception {
/**
* Invalid Name
*/
String invName;
public NameInvalidException() {
super();
}
public NameInvalidException(String s) {
invName = s;
}
}
class SmallException extends Exception {
/**
* Short Name
*/
String sName;
public SmallException() {
super();
}
public SmallException(String s) {
sName = s;
}
}
public class ValidName {
public static void main(String arr[]) {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(
System.in));
System.out.println("Enter the name: ");
String name = br.readLine();
checkName(name);
} catch (IOException e) {
System.out.println(e);
}
}// end main
static void checkName(String name) {
try {
String sarr[] = name.split(" ");
if (sarr.length != 3)
throw new SmallException(name);
for (int j = 0; j < 3; j++) {
System.out.println("in j loop");
if (sarr[j].length() < 3) {
throw new SmallException();
}
}
for (int i = 0; i < name.length(); i++) {
char ch = name.charAt(i);
if (Character.isLetter(ch) || Character.isWhitespace(ch))
System.out.println("ok " + ch);
else
throw new NameInvalidException();
}// end for
}// end try
catch (NameInvalidException e) {
JOptionPane.showMessageDialog(null, e.toString(), "Invalid Name",
JOptionPane.ERROR_MESSAGE);
System.out.println(e);
} catch (SmallException es) {
JOptionPane.showMessageDialog(null, es.toString(), "Invalid Name",
JOptionPane.ERROR_MESSAGE);
}
}// end checkName(name)
}
I had the same behaviour on my machine. The trick is that you have to tell the JDialog class to set itself always on top – which is not possible with using the convenient static showMessageDialog method. So we have to create the JOptionPane and the JDialog by hand. Just add another static method to the ValidName class:
and call this method instead of the JOptionPane.showMessageDialog. It works on my machine, the error message appears where it should: on top of my eclipse IDE.