我有一个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");
}
}
非常感谢任何帮助
答案 0 :(得分:6)
我可以在创建它的实例后更改对话模式吗?
是的,您可以在运行时更改setModal
或ModalityTypes
,但对于此表单中的代码不会让我任何意外
如何从该按钮关闭jdialog(在jdialog中)?
在这种情况下,如果您要致电setVisible
或dispose()
只创建JDialog
一次,
将其创建为本地变量
更改myDialog.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);
,然后更改button
toolbar
(X
)以隐藏JDialog
然后,如果需要,您也可以actionPerformed
仅myDialog.setVisible(true)
和ModalityType
来电话,setVisible应该包含在invokeLater()
中,而不是创建新的实例(new Dialogz(this, true);
)
JButton
中的 JDialog
将仅被调用myDialog.setVisible(false)
答案 1 :(得分:1)
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();
}
}