modal - jdialog java ejemplo
cómo cerrar jdialog desde un botón? (2)
alguien me dijo..
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
public class Mainz extends JFrame implements ActionListener{
JButton showDialog = new JButton("show dialog");
public Mainz() {
setLayout(new FlowLayout());
showDialog.addActionListener(this);
add(showDialog);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
new Dialogz(this, false);
setEnabled(false);
}
public static void main(String[]args){
new Mainz();
}
}
class Dialogz extends JDialog{
JButton close = new JButton("close");
public Dialogz(JFrame owner,boolean modal) {
super(owner, modal);
add(close);
setLocationRelativeTo(owner);
setVisible(true);
close.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae){
closez();
}
});
}
void closez(){
System.out.println("before ="+getModalityType());
setModal(true);
System.out.println("after ="+getModalityType());
getOwner().setEnabled(true);
Dialogz.this.dispose();
}
}
tengo un Jframe (Mainz),
tiene un botón (showDialog),
cuando el usuario hace clic en el botón,
jdialog (Dialogz) mostrará,
ese jdialog tiene un botón
- cómo cerrar jdialog desde ese botón (dentro de jdialog)?
- ¿Puedo cambiar el modo de diálogo después de crear una instancia de este?
Necesito bloquear al dueño de ese jdialog
aquí lo intento ...
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
public class Mainz extends JFrame implements ActionListener{
JButton showDialog = new JButton("show dialog");
public Mainz() {
setLayout(new FlowLayout());
showDialog.addActionListener(this);
add(showDialog);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
new Dialogz(this, true);
}
public static void main(String[]args){
new Mainz();
}
}
class Dialogz extends JDialog{
JButton close = new JButton("close");
public Dialogz(JFrame owner,boolean modal) {
super(owner, modal);
System.out.println(this.getModalityType());
add(close);
setLocationRelativeTo(owner);
setVisible(true);
close.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae){
closez();
}
});
}
void closez(){
setModal(false);
this.dispose();
System.out.println("Method Done");
}
}
muchas gracias por cualquier tipo de ayuda
¿Puedo cambiar el modo de diálogo después de crear una instancia de este?
sí puede cambiar setModal
o ModalityTypes
en tiempo de ejecución, pero para el código en esta forma no me hace ningún comentario
cómo cerrar jdialog desde ese botón (dentro de jdialog)?
en este caso, no importa si va a llamar a setVisible
o a dispose()
crea
JDialog
solo una vez,crear eso como variable local
cambiar
myDialog.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);
, luego, elbutton
en latoolbar
(conX
) para ocultarJDialog
tambiénluego puede llamar desde
actionPerformed
onlymyDialog.setVisible(true)
yModalityType
también si es necesario, setVisible shoud debe estar envuelto eninvokeLater()
, en lugar de crear una nueva instancia (new Dialogz(this, true);
)JButton
colocado enJDialog
se llamará solomyDialog.setVisible(false)
ejemplo correspondiente con sus lógicas