我想在点击JMenu的一个子项JMemuItem后,弹出一个框(可以是面板pane或对话框),框里有两个文本text,用来输入时间,还有一个JComboBox(下拉菜单),应该怎么写。请帮忙解疑,谢谢。

解决方案 »

  1.   

    JDialog w =new JDialog(your_MainWindow);
    JPanel p=new JPanel(new GridBagLayout);//GridBagLayout布局放你的文本框和组合框
    p.add();//添加文本框组合框
    ...
    ···
    w.setVisible(true);//点击JMenuItem的时候
      

  2.   

    JOptionPane.showConfirmDialog(null,component,"",YES_NO_OPTION);
    component可以用自定义的组件,比如定义个JPanel,把很多东西加到Panel上,再把Panel显示在这个ConfirmDialog上不就可以了吗.
      

  3.   


    package test;import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.FlowLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;import javax.swing.JComboBox;
    import javax.swing.JDialog;
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JPanel;
    import javax.swing.JTextField;public class TestJFrame extends JFrame implements ActionListener { private static final long serialVersionUID = -362233428598274611L; private JMenuItem mi = null; public static void main(String[] args) {
    new TestJFrame();
    } public TestJFrame() {
    init();
    } private void init() {
    JMenuBar menuBar = new JMenuBar();
    JMenu menu = new JMenu("Menu");
    menuBar.add(menu);
    mi = new JMenuItem("test");
    mi.addActionListener(this);
    menu.add(mi);
    this.setJMenuBar(menuBar);
    this.getContentPane().setLayout(new BorderLayout());
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setSize(new Dimension(300, 300));
    this.setVisible(true);
    } public void actionPerformed(ActionEvent e) {
    if (e.getSource().equals(mi)) {
    new MyDialog();
    }
    }}class MyDialog extends JDialog { private static final long serialVersionUID = 4463681153478016484L; public MyDialog() {
    super();
    this.setModal(true);
    init();
    } private void init() {
    this.getContentPane().setLayout(new BorderLayout());
    this.getContentPane().add(getCenterPanel(), BorderLayout.CENTER);
    this.setSize(new Dimension(200, 200));
    this.setVisible(true);
    } private JPanel getCenterPanel() {
    JPanel panel = new JPanel();
    panel.setLayout(new FlowLayout(FlowLayout.CENTER));
    JTextField field1 = new JTextField(5);
    JTextField field2 = new JTextField(5);
    JComboBox cb = new JComboBox();
    cb.addItem("cb1");
    cb.addItem("cb2");
    cb.addItem("cb3");
    panel.add(field1);
    panel.add(field2);
    panel.add(cb);
    return panel;
    }
    }