2013-10-27 32 views
-1

我想创建一个将从JMenuItem调用的模态JDialog。我读过一些文章,并找到一个例子(看起来很喜欢)。在这个例子中,主框架是从main方法调用的。如何创建类似的东西,但在main方法中只会被称为主类的构造函数?如何创建一个模态JDialog?

〔实施例: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(); 
} 
} 
+0

不期待有人把它写了你。亲自尝试一下。 –

+0

我试过了。最好的结果是一个带有JTextField和按钮的JDialog,每次我调用JDialog时,JTextField的输出开始为多个。 – usr999

+0

如果你会提出你的代码,并询问它有什么问题,那会更好。 –

回答

2

显然你没有谷歌的问题,因为有一个Java tutorial on it

从例如:

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

这与我的代码具有相同的效果。它从JTextField中乘文本。 – usr999

+0

@ usr999然后我不明白你的问题。你需要编辑来澄清你的问题。 – Craigy

+0

谢谢。我发现我的问题。 – usr999