【问题标题】:How to create a modal JDialog?如何创建模态 JDialog?
【发布时间】:2013-11-06 10:02:05
【问题描述】:

我想创建一个从 JMenuItem 调用的模态 JDialog。我已经阅读了一些帖子并找到了一个示例(看起来很可爱)。在此示例中,从 main 方法调用主框架。如何创建这样的东西,但在主方法中只会被称为主类的构造函数?

例如:http://www.rsdn.ru/forum/java/3526582.1

更新:

我的代码:

import java.awt.event.*;
import javax.swing.*;

 public class JD extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private JMenuBar menubar = new JMenuBar();
private JMenu menu = new JMenu("Options");
private JMenuItem item = new JMenuItem("Try this");
JLabel label = new JLabel("label");
JTextField text = new JTextField(10);
JPanel panel = new JPanel();
JButton b = new JButton("get and close");

JD() {
    super("Frame");
    setSize(200, 200);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setLocationRelativeTo(null);
    menu.add(item);
    menubar.add(menu);
    setJMenuBar(menubar);
    item.addActionListener(this);
    setVisible(true);
}

public void actionPerformed(ActionEvent evnt) {
    Object source = evnt.getSource();
    if (source == item) {
        new Dialog(new JFrame());
    }
}

private class Dialog extends JDialog {
    private static final long serialVersionUID = 1L;

    Dialog(JFrame frame) {
        super(frame, true);
        setSize(200, 200);
        setLocationRelativeTo(null);
        panel.setLayout(null);
        label.setBounds(10, 10, 50, 15);
        panel.add(label);
        text.setBounds(60, 8, 50, 19);
        panel.add(text);
        add(panel);
        b.setBounds(40, 40, 100, 25);
        panel.add(b);
        b.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evnt) {
                System.out.println(text.getText());
                dispose();
            }
        });
        setVisible(true);
    }
}

public static void main(String[] args) {
    new JD();
}
}

【问题讨论】:

  • 不要指望有人为你写出来。自己试试吧。
  • 我试过了。最好的结果是一个带有 JTextField 和按钮的 JDialog,每次我调用 JDialog 时,我从 JTextField 的输出开始变为多个。
  • 如果你能把你的代码贴出来问问有什么问题就更好了。
  • 我已经添加了我的代码。

标签: java swing main jdialog


【解决方案1】:

显然你没有用谷歌搜索这个问题,因为有一个Java tutorial on it

从例子:

new JDialog(this, "", Dialog.ModalityType.DOCUMENT_MODAL);

【讨论】:

  • 这和我的代码效果一样。它将 JTextField 中的文本相乘。
  • @usr999 那么我不明白你的问题。您需要进行编辑以澄清您的要求。
  • 谢谢。我发现了我的问题。
猜你喜欢
  • 2012-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-06
相关资源
最近更新 更多