Java 如何创建模态JDialog?
我想创建一个模态JDialog,它将从JMenuItem调用。我读了一些帖子,发现了一个例子(看下面)。在本例中,从main方法调用主框架。如何创建这样的东西,但在main方法中将只调用main类的构造函数 Exmaple: 更新: 我的代码:Java 如何创建模态JDialog?,java,swing,main,jdialog,Java,Swing,Main,Jdialog,我想创建一个模态JDialog,它将从JMenuItem调用。我读了一些帖子,发现了一个例子(看下面)。在本例中,从main方法调用主框架。如何创建这样的东西,但在main方法中将只调用main类的构造函数 Exmaple: 更新: 我的代码: import java.awt.event.*; import javax.swing.*; public class JD extends JFrame implements ActionListener { private static fina
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();
}
}
很明显,你没有用谷歌搜索这个问题,因为有一个问题 从示例中可以看出:
new JDialog(this, "", Dialog.ModalityType.DOCUMENT_MODAL);
别指望有人为你写出来。你自己试试,我试过了。最好的结果是一个带有JTextField和按钮的JDialog,每次我调用JDialog时,我从JTextField输出的结果都是多个。如果你把代码放出来并询问它有什么问题,会更好。我已经添加了我的代码。这与我的代码效果相同。它将JTextField中的文本相乘。@usr999那么我不明白你的问题。您需要编辑以澄清您的问题。谢谢。我发现了我的问题。