繁体   English   中英

从JDialog打开JFrame,它显示在JDialog的顶部

[英]Open JFrame from JDialog and it shows on top of JDialog

在这种情况下,“我的JFrame有一个按钮,单击它会打开一个JDialog ,这是一个模型对话框。 JDialog有另一个按钮,单击它时我想打开另一个JFrmae

结果:另一个Jframe打开,但它不会到达顶部,它显示在对话框下方。我想在该对话框顶部打开第二个JFrame

可以使用secondFrame.setAlwaysOnTop(true); 但我没有控制权将其关闭或移动。

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
public class FrameTest
{
    public static void main(String args[])
    {
        JFrame firstFrame = new JFrame("My 1st Frame");
        JButton button = new JButton("Frame Click");

        button.addActionListener(new ActionListener()
        {

            @Override
            public void actionPerformed(ActionEvent e)
            {
                JDialog dialog = new JDialog();
                dialog.setSize(100, 100);
                dialog.setModal(true);
                JButton button1 = new JButton("Dialog Click");

                button1.addActionListener(new ActionListener()
                {
                    @Override
                    public void actionPerformed(ActionEvent e)
                    {
                        JFrame secondFrame = new JFrame("My 2nd Frame");
                        secondFrame.setVisible(true);
                        secondFrame.setSize(400, 200);
                        secondFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                        secondFrame.setAlwaysOnTop(true);
                     }
                });

                dialog.add(button1);
                dialog.setVisible(true);
            }
        });

        firstFrame.add(button);
        firstFrame.setVisible(true);
        firstFrame.setSize(400, 200);
        firstFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

JDialog有另一个按钮,单击它时我想打开另一个JFrmae。

不要那样做 一个典型的Swing应用程序具有一个主JFrame和几个JDialog 请参阅本主题使用多个JFrame,良好/不良做法?

结果:另一个Jframe打开,但它不会到达顶部,它显示在对话框下方。我想在该对话框顶部打开第二个JFrame。

当然可以,因为对话框是模式对话框。

可以使用secondFrame.setAlwaysOnTop(true); 但我没有控制权将其关闭或移动。

它不会解决任何问题,因为问题与对话框中的模态有关。 请参阅本文: 如何在对话框中使用模态以了解模态如何工作。 这个答案中也有一个解释。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM