¿Hay una manera de quitar el botón de cierre ("X") en la barra de título JDialog
?botón Eliminar "X" en el oscilación JDialog
Respuesta
Haciendo un cálculo, ajuste que sea PL & F decorado y eliminar el componente por su nombre.
¿Qué es PL & F? Gracias. – kenshinji
PL & F es Look & Feel conectable. La manera fea en que Swing puede adoptar un look & Feel arbitrario. –
¿Por qué feo? ¿Cuál sería la forma correcta de hacerlo? –
Puede eliminar todo el título de diálogo llamando dialog.setUndecorated (verdadero), pero esto significa que el diálogo no se puede mover más.
También puede ejecutar dialog.setDefaultCloseOperation (WindowConstants.DO_NOTHING_ON_CLOSE) para evitar que el botón hace nada.
Además de eso, no creo que haya una forma de eliminar la X por completo.
Creo que puede llamar al dialog.setUndecorated(true)
para eliminar la barra de título. Sin embargo, no estoy seguro acerca de la 'X'.
Extracción de la 'X' no puede ser una gran idea, sin embargo, como usted quiere que sus usuarios sean capaces de cerrar el diálogo con facilidad.
La mejor apuesta es controlar lo que sucede cuando los usuarios hacen clic en la "X" usando dialog.setDefaultCloseOperation
o WindowListener
.
A partir de Java 1.7 (También conocido como Dolphin o Java 7), no se puede desactivar o eliminar el botón de cierre en una ventana. Puede quitar/deshabilitar el botón Maximizar con frame.setResizable(false)
y puede eliminar los botones minimizar y maximizar utilizando java.awt.Dialog
o una clase que lo amplía, como javax.swing.JDialog
. Puede eliminar la barra de título, los bordes y los botones con frame.setUndecorated(true)
, y puede tener control total sobre la visibilidad de todos los botones en la barra de título (mientras pierde compatibilidad con varias plataformas e integración de sistema operativo) con frame.setDefaultLookAndFeelDecorated(true)
(suponiendo que es un JFrame o JDialog). Este es todo el control que veo posible con el JDK actual.
Esto es "no se corregirá" en [bug parade] (http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5085932). –
Esto no es del todo correcto. Subclasificar/instanciar un JDialog en OS X (probado en El Capitan) no elimina ningún botón de la barra de título, ni ninguna combinación de configuraciones (y sí, probé todas las combinaciones). Solo 'setUndecorated (true)' los elimina a todos, pero junto con ellos va la barra de título. Sin duda, puede modificar el comportamiento de los botones de la barra de título, pero en cuanto a la apariencia ...Es una situación muy complicada en la que he invertido demasiado tiempo con soluciones insatisfactorias y códigos no portátiles. – EntangledLoops
@EntangledLoops ¡Gracias por contribuir con tu comentario! Si bien es cierto que JDialog no retira los botones minimizar/"maximizar" en los cuadros de diálogo de OS X, desactiva la función de minimizar. No tengo una Mac a la mano para probar esto, pero estoy dispuesto a apostar que el botón Maximizar simplemente lo cambia de tamaño, y si establece 'dialog.setResizable (false)', ¡el botón verde se desactivará también! De todos modos, como dije en mi respuesta, es molesto que no tengamos el control total sobre esto, pero me puedo imaginar cuán pesadilla podría ser para los creadores de JSE programar en todas las plataformas. ; 3 – Supuhstar
static public void removeButtons(Component c){
if (c instanceof AbstractButton){
String accn = c.getAccessibleContext().getAccessibleName();
Container p=c.getParent();
//log.debug("remove button %s from %s",accn,p.getClass().getName());
c.getParent().remove(c);
}
else if (c instanceof Container){
//log.debug("processing components of %s",c.getClass().getName());
Component[] comps = ((Container)c).getComponents();
for(int i = 0; i<comps.length; ++i)
removeButtons(comps[i]);
}
}
esto eliminará los botones agregados al diálogo, no los botones de cierre de diálogo. –
Esto no tiene ningún efecto en los botones de la barra de título (OS X). – EntangledLoops
Esto es realmente bastante divertido y deja tu aplicación en un estado hilarantemente inutilizable si _siempre_ usas botones x3 – Supuhstar
Aquí está mi experiencia:
- intentado usar
setUndecorated(true)
: Hecho todo elDialog
invisible. - Intentó
setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE)
: Esto no cambió el comportamiento en absoluto. Mi cuadro de diálogo aún está cerrado. Al establecer la operación de cierre predeterminada enDO_NOTHING_ON_CLOSE
, se delega la operación de cierre al métodowindowClosing()
deWindowListener
registrado.
lo que funcionó para mí fue:
setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
//Remove any existing WindowListeners
for (WindowListener wl : this.getWindowListeners())
this.removeWindowListener(wl);
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
if ("Optional condition") {
JOptionPane.showMessageDialog(null, "You cannot close this window");
}
}
});
- 1. JDialog cancelar botón
- 2. Botón para cerrar un JDialog
- 3. Ajustes de oscilación para Mac OS X
- 4. Componente de oscilación y edición jdk problema
- 5. JOptionPane vs JDialog
- 6. el botón de oscilación de Java no se repinta correctamente después de cerrar el cuadro de diálogo
- 7. Cómo eliminar el botón Maximizar en la ventana de la herramienta Mac OS X en Qt
- 8. oscilación teclado en pantalla
- 9. Oscilación visual en Eclipse
- 10. Cómo crear un JDialog modal encima de otro modal JDialog
- 11. JDialog altura fija
- 12. oyente de acción a JDialog para hacer clic en el botón
- 13. oscilación transparente de Windows
- 14. oscilación categoría
- 15. Oscilación: colocando el mouse sobre la etiqueta del botón de opción en JPanel translúcido
- 16. espera para JDialog para cerrar
- 17. Android eliminar botón dinámicamente
- 18. Eliminar elementos onclick (incluido el botón eliminar) con jQuery
- 19. ¿Cómo puedo eliminar el botón de ExpandableListView?
- 20. Java - JDialog inamovible
- 21. No se puede eliminar el relleno inferior en el botón
- 22. Eliminar el relleno adicional en el botón IE
- 23. Mostrar solo X y minimizar el botón en wpf
- 24. Pidiendo confirmación cuando se hace clic en el botón "X"
- 25. ocultar el botón de cierre "X" en FancyBox
- 26. Resalte el botón predeterminado en ExtJS (3.x) MessageBox
- 27. ¿Cómo cerrar un JDialog modal cuando el usuario hace clic fuera de JDialog?
- 28. Oscilación Archivos grandes Rendimiento
- 29. Teclas de oscilación UIManager.getColor()
- 30. Cómo eliminar el botón Ayuda predeterminado en CPropertySheet en MFC?
He visto algunas aplicaciones que muestran otro cuadro de diálogo si se pulsa el botón de cierre que le pide pulsar uno de los botones de otros en su lugar. ¡Genio! –