【问题标题】:Setting on top dialog if Frame of Dialog in Java如果在 Java 中的对话框框架,则在顶部对话框上设置
【发布时间】:2014-05-07 11:12:37
【问题描述】:

我在 java 中有一个 Swing 应用程序,其中我在单击事件时打开一个 Dialog,之后它将在第一个对话框按钮单击时打开另一个对话框。

但是当我点击第二个对话框时,第一个对话框变得可见,并且第二个对话框被禁用,当我试图关闭那个对话框时它没有关闭。但是当我关闭第一个对话框时,它就启用了。

那么我该如何解决呢。

我只需要在第一个对话框打开时激活它,第二个在它打开时激活它。

对话顺序。

JFrame-->Dialog 1 --> Dialog 2

我该如何解决?

【问题讨论】:

  • 如何将第二个对话框的父级设置为第一个对话框,将第一个对话框传递给第二个对话框的构造函数。
  • 有可能吗?它会满足这个要求吗?
  • 你能给我示例代码的链接吗?
  • 阅读有关模态和模态类型的 Oracle 教程,有几个选择,不知道从三种可能的情况中选择哪一种,以及没有 SSCCE/MCVE 的老化 ....
  • 好吧,我建议你阅读教程,docs.oracle.com/javase/tutorial/uiswing/components/… 上面提到的注意方式。

标签: java swing dialog jframe


【解决方案1】:

好吧,既然你坚持要代码,我就给你做了一个简单的例子,希望对你有帮助!

package com.learningjava;

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

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
/**
 * a simple demo to using two dialog
 *
 */
public class DialogFrameDemo extends JFrame{
    public static void main(String[] args) {
        DialogFrameDemo frame = new DialogFrameDemo();
        frame.setSize(400, 400);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
    public DialogFrameDemo() {
        super("Dialog Demo");
        //prepare button in frame
        JButton btnInFrame = new JButton("Click to open a Dialog");
        JPanel framePanel = new JPanel();
        framePanel.add(btnInFrame);
        this.add(framePanel,BorderLayout.NORTH);

        btnInFrame.addActionListener(new ActionListener(){

            @Override
            public void actionPerformed(ActionEvent e) {
                // generate dialog one
                dialogOne = new JDialog(DialogFrameDemo.this,"Dialog one",false);
                JPanel dialogPanel = new JPanel();
                dialogPanel.setLayout(new GridLayout(3,1));
                //prepare button in dialog one
                JButton btnInDialogOne = new JButton("Click to open another Dialog");
                btnInDialogOne.addActionListener(new ActionListener(){

                    @Override
                    public void actionPerformed(ActionEvent e) {
                        //generate dialog second
                        JDialog dialogTwo = new JDialog(dialogOne,"Dialog Two",true);
                        JPanel dialogPanel = new JPanel();
                        dialogPanel.setLayout(new GridLayout(3,1));
                        dialogPanel.add(new JLabel("Dialog Two"));
                        dialogPanel.add(new JLabel("Lable 21"));
                        dialogPanel.add(new JLabel("Lable 22"));
                        dialogTwo.setContentPane(dialogPanel);
                        dialogTwo.pack();
                        dialogTwo.setVisible(true);
                        dialogTwo.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
                    }
                });
                dialogPanel.add(btnInDialogOne);
                dialogPanel.add(new JLabel("Lable 11"));
                dialogPanel.add(new JLabel("Lable 12"));
                dialogOne.setContentPane(dialogPanel);
                dialogOne.pack();
                dialogOne.setVisible(true);
                dialogOne.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
            }
        });
    }

    private static final long serialVersionUID = 1L;
    private JDialog dialogOne;
}

【讨论】:

  • 你也对 +1,你先给它,所以 +1 和绿色信号给你。
【解决方案2】:

当按下 JDialog1 的按钮时,也许您应该尝试将第二个 JDialog 预览为 JDialog1 的 InternalXXXDialog。 在这里寻找解释。 http://docs.oracle.com/javase/8/docs/api/javax/swing/JOptionPane.html#showInternalOptionDialog-java.awt.Component-java.lang.Object-java.lang.String-int-int-javax.swing.Icon-java.lang.Object:A-java.lang.Object-

【讨论】:

  • 老兄,我不想要选项窗格,但我只需要其中的 Jdialogs 框。我不能只使用 Jdialog 吗?
  • 好吧,我不会对你投反对票,因为你至少尝试过。所以这里兄弟+1供您尝试:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-11
  • 1970-01-01
  • 1970-01-01
  • 2010-12-03
  • 2017-06-04
  • 1970-01-01
相关资源
最近更新 更多