我做了一个菜单栏,我的目的是想点菜单栏的子菜单后弹出一个可输入文本的对话窗口,不知怎么弄,请指教,谢谢……

解决方案 »

  1.   

    Swing? 浏览器?
    到底是啥东西?
      

  2.   

    用NetBeans试试,可以直接画AWT和swing的界面
      

  3.   

    很简单,最简单的方法是JOptionPane.showInputDialog(...) //参数自己看下文档
    第二种方法就是自己新建一个类继承JDialog,也就是自己做一个对话框
      

  4.   

    是用swing做的一个菜单栏,目的是想点一下菜单栏中的子菜单后弹出一个可输入文本的窗口
      

  5.   

    import java.awt.*;
    import java.awt.event.*;
    import java.util.Calendar;
    import java.util.GregorianCalendar;import javax.swing.*;
    import javax.swing.event.MenuEvent;
    import javax.swing.event.MenuListener;public class AlarmClock {
        public static void main(String[] args) {
            EventQueue.invokeLater(new Runnable() {
                public void run() {
                    AlarmFrame f = new AlarmFrame();
                    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    f.setVisible(true);
                }
            });
        }
    }@SuppressWarnings("serial")
    class AlarmFrame extends JFrame implements Runnable {
        Thread clock;    public AlarmFrame() {
         @SuppressWarnings("unused")
    MenuItem b=null;
            setTitle("AlarmClock");
            setSize(200, 100);
            setFont(new Font("Times New Roman", Font.BOLD, 40));
            start();
            Menu switchMenu = new Menu("开关设置");
            switchMenu.add(new MenuItem("开"));
            switchMenu.add(new MenuItem("关"));
            Menu timeMenu = new Menu("闹铃设置");
            timeMenu.add(new MenuItem("闹铃时间"));
            b.addActionListener(listener);
            b=new MenuItem("闹铃时间");
            Menu stopMenu = new Menu("停止闹铃");
            stopMenu.add(new MenuItem("stop"));
            MenuBar menuBar = new MenuBar();
            setMenuBar(menuBar);
            menuBar.add(switchMenu);
            menuBar.add(timeMenu);
            menuBar.add(stopMenu);
        }    public void start() {
            if (clock == null) {
                clock = new Thread(this);
                clock.start();
            }
        }    public void run() {
            while (clock != null) {
                repaint();
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException ex) {
                    ex.printStackTrace();
                }
            }
        }    public void stop() {
            clock = null;
        }    public void paint(Graphics g) {
            // Graphics2D g2=(Graphics2D g){
            Calendar now = new GregorianCalendar();
            String timeInfo = "";
            int hour = now.get(Calendar.HOUR_OF_DAY);
            int minute = now.get(Calendar.MINUTE);
            int second = now.get(Calendar.SECOND);        if (hour <= 9)
                timeInfo += "0" + hour + ":";
            else
                timeInfo += hour + ":";
            if (minute <= 9)
                timeInfo += "0" + minute + ":";
            else
                timeInfo += minute + ":";
            if (second <= 9)
                timeInfo += "0" + second;
            else
                timeInfo += second;        g.setColor(Color.white);
            Dimension dim = getSize();
            g.fillRect(0, 0, dim.width, dim.height);
            g.setColor(Color.orange);
            g.drawString(timeInfo, 20, 80);    }
       ActionListener listener=new ActionListener(){
         public void actionPerformed(ActionEvent e){
         if((e.getActionCommand()).equals("闹铃时间")){
         TextField tf;
         tf=new TextField(7);    
         JFrame ff=new JFrame("闹铃时间");
         ff.setSize(100,100);
         ff.setVisible(true);
         final Panel p=new Panel();
         p.add(tf);
         ff.add(p);
         }
     
    }
        };
    }
    我这代码的目的是想点击一下菜单里的”闹铃设置“后,再点一下所弹出的子菜单“闹铃时间”后能弹出一个新窗口,不知这样写错在哪,请高手赐教,非常感谢……
      

  6.   

    帮你看了下你贴的代码:问题一:刚开始运行的时候有个空指针异常的信息,原因是
    b.addActionListener(listener);
    b=new MenuItem("闹铃时间");
    这两行代码要互换下位置,因为你的b刚开始只是定义了没有赋值,你就直接为b添加了事件,所以出现异常。应该先为b赋值再为它添加事件,你先把这个错误改过来后再改下面的问题二
    timeMenu.add(new MenuItem("闹铃时间")); 
    b.addActionListener(listener);
    b=new MenuItem("闹铃时间");你把timeMenu.add(new MenuItem("闹铃时间")); 改成timeMenu.add(b);当然改后要把这3句的顺序调整一下 ,明白了吧,改了后在我的机子上可以得到你要的效果。