当前位置: 首页 > 知识库问答 >
问题:

如何从按钮关闭jdialog?

陶瀚玥
2023-03-14

我有一个Jframe(美因茨),

它有一个按钮(showDialog),

当用户单击该按钮时,

jdialog (Dialogz) 将显示,

那个jdialog有一个按钮

  • 如何从该按钮关闭jdialog(在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");

        }
    }

非常感谢你的任何帮助

共有2个答案

盖辉
2023-03-14

有人告诉我。。

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();
        }
    }
龙弘济
2023-03-14

我可以在创建对话框实例后更改对话框的模式吗?

是的,您可以在运行时更改setModalModalityTypes,但对于这种形式的代码并没有让我有任何意义

如何从该按钮关闭jdialog(在jdialog内部)?

在这种情况下,无论您是调用setViable还是dispose()

>

  • 只创建一次 JDialog

    将其创建为局部变量

    将<code>更改为myDialog.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE),然后工具栏中的按钮(使用X隐藏JDialog

    然后,您可以从actionPerformed调用myDialog。setVisible(true)和<code>ModalityType,而不是创建一个新实例(<code>new Dialogz(这个,true)

    放置在JDialog中的JButton将仅称为myDialog.setVisible(false)

    与您的逻辑对应的示例

  •  类似资料:
    • 我有一个Jframe窗口,里面有一个按钮。通过单击该按钮,它将打开一个新的JFrame窗口。但是当我关闭这个窗口时,它会自动用按钮关闭第一个Jframe窗口。当我关闭第二个Jframe窗口时,如何防止第一个Jframe窗口关闭?

    • 我有一个带有searchView图标的操作栏。我点击searchView图标,出现softInputMode键盘,我的ListView出现用于搜索。但是,当您关闭searchView时,searchView会关闭,但我无法让ListView在searchView关闭时也关闭。 下面是我在activity_maps中的ListView代码。xml 地图ctivity.java 所以最初当MapsAc

    • 嗨,我有一个jFrame,我想问问用户,当单击close按钮时,他是否确定要关闭jFrame: 当他从jpanel弹出窗口中选择“否”按钮时,我该如何撤消关闭操作?

    • 作为Java的新手,多年的iOS和。NET的经验,我发现这是非常令人困惑。我想要的是一个非常简单的对话框(从主窗口调用),带有OK和Cancel按钮。单击“确定”时,它会执行一些操作,然后关闭对话框。单击“取消”时,它只会取消对话框。 然而,使用SWT shell对话框类来实现这一点并不明显。如何获得一个按钮来关闭对话框,并将执行返回到主窗口?

    • 如何让我的动作监听器单击按钮并将按钮文本显示到文本区域? 在actionlistener之后初始化,因此当我尝试定义

    • 问题内容: 我正在使用精美的框创建弹出窗口,并使用iframe在其上加载另一个页面。这是我的代码 它成功加载页面并执行相应的操作。但是,它没有关闭弹出窗体,而是在弹出窗口本身内部加载了弹出源窗体。我想在工作完成后关闭弹出窗口,然后返回到从其生成弹出窗口的主菜单页面。如何在弹出窗口的按钮单击上实现此目的。 此致Rangana 问题答案: 拨电至 根据http://fancybox.net/faq 如