mop*_*opr 3 java swing modal-dialog jdialog
我有一个Jframe(美因茨),
它有一个按钮(showDialog),
当用户点击按钮时
jdialog(Dialogz)将展示,
那个jdialog有一个按钮
我需要阻止该jdialog的所有者
继续我试试......
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");
}
}
Run Code Online (Sandbox Code Playgroud)
非常感谢任何帮助
我可以在创建它的实例后更改对话模式吗?
是的,你可以改变setModal或ModalityTypes运行时,但对于这种形式的代码不会让我任何意义
如何从该按钮关闭jdialog(在jdialog内)?
在这种情况下,无论你打电话setVisible还是dispose()
JDialog只创造一次,
将其创建为局部变量
变化myDialog.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);,则button在toolbar(与X)隐藏JDialog过
那么你可以从调用actionPerformed只有myDialog.setVisible(true)和ModalityType 太如果需要的话,调用setVisible 768,16被包裹在invokeLater(),而不是创建一个新实例(new Dialogz(this, true);)
JButton放入JDialog将只会被调用myDialog.setVisible(false)