ventana showinputdialog showconfirmdialog personalizar emergente ejemplos cancelar boton java swing joptionpane

java - showinputdialog - JOptionPane no mostrará su diálogo encima de otras ventanas



personalizar joptionpane (6)

Windows bloquea esta operación desde XP.

El escenario anterior era similar a: Se trata de dar una propina en un texto de un editor y no reconocer que otro diálogo está llegando al frente cuando se está inclinando el texto. El próximo diálogo obtiene el foco y usted está inclinando el nuevo diálogo. Tal vez haga clic en Entrar después de que esté listo y haga esto en el cuadro de diálogo incorrecto, que le pregunta si realmente desea extraer su disco duro;)

La llamada al frente en java solo funciona para ventanas de Java.

La posibilidad de notificar al usuario de una nueva ventana es implementar un Marco, que se resaltará / parpadeará en la barra de tareas de Windows.

Tengo un problema actualmente para mi aplicación de recordatorio de swing, que puede minimizar a la bandeja al cerrar. Mi problema aquí es que necesito el cuadro de diálogo JOptionPane para que aparezca a tiempo de acuerdo con lo que establecí, pero el problema aquí es que, cuando lo minimizo, aparecerá el diálogo, pero no en la parte superior de las ventanas cuando otra aplicación como explorer, firefox se está ejecutando, ¿alguien sabe cómo abrir el cuadro de diálogo en la parte superior de las ventanas sin importar qué aplicación se esté ejecutando?


¿Estás usando uno de los JOptionPanes enlatados? (Como JOptionPane.showCOnfirmDialog (...))

Es posible que desee consultar la extensión de JDialog y crear su propio panel de diálogo, y luego llamar a myDialog.setAlwaysOnTop (true);


Cree un JFraum vacío, respectivamente, ficticio, configúrelo siempre en la parte superior y úselo como componente para JOptionPane en lugar de nulo. Entonces JOptionPane permanece siempre en la parte superior de todas las demás ventanas de una aplicación. También puede determinar dónde aparece JOptionPane en la pantalla con la ubicación del JFrame ficticio.

JFrame frmOpt; //dummy JFrame private void question() { if (frmOpt == null) { frmOpt = new JFrame(); } frmOpt.setVisible(true); frmOpt.setLocation(100, 100); frmOpt.setAlwaysOnTop(true); String[] options = {"delete", "hide", "break"}; int response = JOptionPane.showOptionDialog(frmOpt, msg, title, JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, "delete"); if (response == JOptionPane.YES_OPTION) { removeRow(); } frmOpt.dispose(); }


Corrección de la publicación anterior ..

He resuelto mi problema de la siguiente manera:

this.setVisible(true); // show main frame MyDialog dialog = New MyDialog(this, true); // show my custom dialog dialog.setVisible(true); this.setVisible(false);

Funciona bien para mí :)


Puede pensar en usar un JFrame en su lugar. Puede darte un poco más de flexibilidad.

Si está utilizando un JFrame y desea que aparezca en la parte superior de las otras ventanas, use:

myFrame.setVisible(true); myFrame.setState(Frame.NORMAL);

SetState mostrará la ventana al usuario si estaba en estado minimizado previamente.


Publicación anterior, pero estaba luchando con esto.

Mi problema fue más con Javafx, lo que permite que JOptionPane vaya detrás de la ventana de Java actual.

Por lo tanto, utilicé lo siguiente que hace lo que el cartel original me pidió al poner JOptionPane frente a todas las ventanas; incluso JAVAFX.

Primero, el viejo JOptionPane:

JOptionPane.showMessageDialog(null, "Here I am");

Ahora un JOptionPane que se mantiene al frente:

final JDialog dialog = new JDialog(); dialog.setAlwaysOnTop(true); JOptionPane.showMessageDialog(dialog, "Here I am");

Y para divertirse, aquí todo es una larga fila:

JOptionPane.showMessageDialog( ((Supplier<JDialog>) () -> {final JDialog dialog = new JDialog(); dialog.setAlwaysOnTop(true); return dialog;}).get() , "Here I am");

Puede crear un método estático en algún lugar que devuelva el JDialog por usted y luego simplemente llamarlo en JOptionPane para limpiar un poco su código.