import java.awt.*;
import java.awt.event.*;
import java.util.Calendar;
import java.util.GregorianCalendar;import javax.swing.*;
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(){
setTitle("AlarmClock");
setSize(255,100);
setFont(new Font("Times New Roman",Font.BOLD,60));
start();
JMenu switchMenu=new JMenu("开关设置");
switchMenu.add(new TestAction("开"));
switchMenu.add(new TestAction("关"));
JMenu timeMenu=new JMenu("闹铃设置");
timeMenu.add(new TestAction("闹铃时间"));
JMenu stopMenu=new JMenu("停止闹铃");
stopMenu.add(new TestAction("stop"));
JMenuBar menuBar=new JMenuBar();
setJMenuBar(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);

}
}
@SuppressWarnings("serial")
class TestAction extends AbstractAction{
public TestAction(String name){
super(name);
}
public void actionPerformed(ActionEvent e){
System.out.println(getValue(Action.NAME)+"selected.");
}
}
以上代码段最终目的是想要时间显示示跟菜单显示,但执行却只有时间显示,删除时间显示示部分才能显示示菜单部分,怎样才能使两者都显示呢?在下初学,请各位的指教,谢谢……

解决方案 »

  1.   

    给你 改了下, 关键 原因 是挡住了,呵呵 换个 重量级awt 就ok了package com.kangta;import java.awt.*;
    import java.awt.event.*;
    import java.util.Calendar;
    import java.util.GregorianCalendar;import javax.swing.*;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() {
    setTitle("AlarmClock");
    setSize(255, 100);
    setFont(new Font("Times New Roman", Font.BOLD, 60));
    start();
    Menu switchMenu = new Menu("开关设置");
    switchMenu.add(new MenuItem("开"));
    switchMenu.add(new MenuItem("关"));
    Menu timeMenu = new Menu("闹铃设置");
    timeMenu.add(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); }
    }@SuppressWarnings("serial")
    class TestAction extends AbstractAction {
    public TestAction(String name) {
    super(name);
    } public void actionPerformed(ActionEvent e) {
    System.out.println(getValue(Action.NAME) + "selected.");
    }
    }
      

  2.   

    设置Font
    用Font对象填充字体
      

  3.   


    import java.awt.*;
    import java.awt.event.*;
    import java.util.Calendar;
    import java.util.GregorianCalendar;import javax.swing.*;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() {
            setTitle("AlarmClock");
            setSize(255, 100);
            setFont(new Font("Times New Roman", Font.BOLD, 60));
            start();
            Menu switchMenu = new Menu("开关设置");
            switchMenu.add(new MenuItem("开"));
            switchMenu.add(new MenuItem("关"));
            Menu timeMenu = new Menu("闹铃设置");
            timeMenu.add(new MenuItem("闹铃时间"));
            Menu stopMenu = new Menu("停止闹铃");
            stopMenu.add(new MenuItem("stop"));
            MenuBar menuBar = new MenuBar();
            menuBar.setFont(new Font("Times New Roman", Font.BOLD, 12));
            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);    }
    }//@SuppressWarnings("serial")
    class TestAction extends AbstractAction {
        public TestAction(String name) {
            super(name);
        }    public void actionPerformed(ActionEvent e) {
            System.out.println(getValue(Action.NAME) + "selected.");
        }
    }