请大家看看下面程序到底错在什么地方?import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.text.*;import javax.swing.*;public class MimiClock extends JApplet implements Runnable
{
Thread runner=null;
JPanel jPan;
JLabel jwelcome,jOnClock,jAnim,jOffClock,jVer;
Image offScreenImage,imgMimi,imgClock,imgAnim[];
Graphics offScreenG;
Calendar cal=new GregorianCalendar();
int dh,dm,ds,ch,cm,cs;
int xs,xm,xh,ys,ym,yh;
int xcenter=149;
int ycenter=249;
int timeout=200;
SimpleDateFormat df=new SimpleDateFormat("yyyy MM dd HH:mm:ss");
Control control;
public void init()
{
offScreenImage=createImage(300,450);
offScreenG=offScreenImage.getGraphics();
jPan=new JPanel();
//welcome Label
jwelcome=new JLabel("welcome to useing MimiClock");
jPan.add(jwelcome);
jwelcome.setBackground(Color.green);
jwelcome.setBounds(30,30,30,10);//jwelcome.getSize().width,jwelcome.getSize().height);
//加载图片
imgMimi=getImage(getCodeBase(),"mimi.gif");
imgClock=getImage(getCodeBase(),"clock.gif");
imgAnim=new Image[5];
for(int i=0;i<5;i++) imgAnim[i]=getImage(getCodeBase(),"img"+i+".gif");
//current time
ds=(int)cal.get(Calendar.SECOND);
dm=(int)cal.get(Calendar.MINUTE);
dh=(int)cal.get(Calendar.HOUR_OF_DAY);
//point location
xs=(int)(Math.cos(ds*3.14f/30-3.14f/2)*30+xcenter);
xm=(int)(Math.cos(dm*3.14f/30-3.14f/2)*25+xcenter);
xh=(int)(Math.cos((dh*30+dm/2)*3.14f/180-3.14f/2)*18+xcenter);
ys=(int)(Math.sin(ds*3.14f/30-3.14f/2)*30+ycenter);
ym=(int)(Math.cos(dm*3.14f/30-3.14f/2)*25+ycenter);
yh=(int)(Math.cos((dh*30+dm/2)*3.14f/180-3.14f/2)*18+ycenter);
setLayout(new BorderLayout());
add(jPan,BorderLayout.WEST);
setBackground(Color.red);
add(control=new Control(this),BorderLayout.EAST);
control.setSize(200,450);
}
public void start()
{
if(runner==null)
{
runner=new Thread(this);
runner.start();
}
}
public void run()
{
while(runner!=null)
{
try{runner.sleep(timeout);}
catch(InterruptedException e){}
repaint();
}
}
public void update(Graphics g)
{
if(offScreenImage==null) offScreenImage=createImage(300,450);
offScreenG.clipRect(1,1,299,449);
paint(offScreenG);
//g=getGraphics();//??
//g.clipRect(1,1,299,449);//??
g.drawImage(offScreenImage,0,0,this);
}
public void paint(Graphics g)
{
String today;
Date dat=new Date();
cal.setTime(dat);
today=df.format(dat);
//current time
ds=(int)cal.get(Calendar.SECOND);
dm=(int)cal.get(Calendar.MINUTE);
dh=(int)cal.get(Calendar.HOUR_OF_DAY);
//point location
xs=(int)(Math.cos(ds*3.14f/30-3.14f/2)*30+xcenter);
xm=(int)(Math.cos(dm*3.14f/30-3.14f/2)*25+xcenter);
xh=(int)(Math.cos((dh*30+dm/2)*3.14f/180-3.14f/2)*18+xcenter);
ys=(int)(Math.sin(ds*3.14f/30-3.14f/2)*30+ycenter);
ym=(int)(Math.cos(dm*3.14f/30-3.14f/2)*25+ycenter);
yh=(int)(Math.cos((dh*30+dm/2)*3.14f/180-3.14f/2)*18+ycenter);
//paint point
g.drawLine(xcenter,ycenter-1,xm,ym);
g.drawLine(xcenter-1,ycenter,xm,ym);
g.drawLine(xcenter,ycenter-1,xh,yh);
g.drawLine(xcenter-1,ycenter,xh,yh);
g.drawString(today,95,400);
g.drawImage(offScreenImage,0,0,this);
}
public void stop()
{
runner=null;
}
}class Control extends JPanel implements ItemListener,ActionListener
{
MimiClock mc;
JLabel err;
JTextField h,m,s;
JComboBox jcb;
JButton onButton,offButton;
public Control(MimiClock mcp)
{
mc=mcp;
setLayout(new BorderLayout());
JPanel jcon=new JPanel();
jcon.setLayout(new GridLayout(12,1));
jcon.add(new JLabel());
jcon.add(new JLabel());
jcon.add(new JLabel());
JPanel jcon1=new JPanel();
jcon.setLayout(new FlowLayout(FlowLayout.LEFT));
jcon1.add(new JLabel("set time clock"));
jcon1.add(h=new JTextField());
jcon1.add(new JLabel("hour"));
jcon1.add(m=new JTextField());
jcon1.add(new JLabel("minuts"));
jcon1.add(s=new JTextField());
jcon1.add(new JLabel("second"));
jcon.add(jcon1);
JPanel jcon2=new JPanel();
jcon2.setLayout(new FlowLayout(FlowLayout.LEFT));
jcon2.add(new JLabel("set anim"));
jcb=new JComboBox();
jcb.addItemListener(this);
jcb.addItem("anim1--8:30");
jcb.addItem("anim2--12:00");
jcb.addItem("anim3--17:30");
jcon2.add(jcb);
jcon.add(jcon2);
jcon.add(err=new JLabel("not set Clock"));
jcon.add(new JLabel());
JPanel jcon3=new JPanel();
jcon3.setLayout(new FlowLayout(FlowLayout.CENTER));
onButton=new JButton("Set");
onButton.addActionListener(this);
offButton=new JButton("Clear");
offButton.addActionListener(this);
jcon3.add(onButton);
jcon3.add(new JLabel());
jcon3.add(offButton);
jcon.add(jcon3);
jcon.add(new JLabel());
jcon.add(new JLabel());
JPanel jcon4=new JPanel();
jcon.setLayout(new FlowLayout(FlowLayout.CENTER));
jcon4.add(new JLabel("Mimi Clock"));
jcon.add(jcon4);
jcon.add(new JLabel());
add(jcon,BorderLayout.CENTER);//??
}
public void itemStateChanged(ItemEvent e)
{
}
public void actionPerformed(ActionEvent e)
{
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawString("aaa",0,60);
}
}
import java.awt.*;
import java.awt.event.*;
import java.text.*;import javax.swing.*;public class MimiClock extends JApplet implements Runnable
{
Thread runner=null;
JPanel jPan;
JLabel jwelcome,jOnClock,jAnim,jOffClock,jVer;
Image offScreenImage,imgMimi,imgClock,imgAnim[];
Graphics offScreenG;
Calendar cal=new GregorianCalendar();
int dh,dm,ds,ch,cm,cs;
int xs,xm,xh,ys,ym,yh;
int xcenter=149;
int ycenter=249;
int timeout=200;
SimpleDateFormat df=new SimpleDateFormat("yyyy MM dd HH:mm:ss");
Control control;
public void init()
{
offScreenImage=createImage(300,450);
offScreenG=offScreenImage.getGraphics();
jPan=new JPanel();
//welcome Label
jwelcome=new JLabel("welcome to useing MimiClock");
jPan.add(jwelcome);
jwelcome.setBackground(Color.green);
jwelcome.setBounds(30,30,30,10);//jwelcome.getSize().width,jwelcome.getSize().height);
//加载图片
imgMimi=getImage(getCodeBase(),"mimi.gif");
imgClock=getImage(getCodeBase(),"clock.gif");
imgAnim=new Image[5];
for(int i=0;i<5;i++) imgAnim[i]=getImage(getCodeBase(),"img"+i+".gif");
//current time
ds=(int)cal.get(Calendar.SECOND);
dm=(int)cal.get(Calendar.MINUTE);
dh=(int)cal.get(Calendar.HOUR_OF_DAY);
//point location
xs=(int)(Math.cos(ds*3.14f/30-3.14f/2)*30+xcenter);
xm=(int)(Math.cos(dm*3.14f/30-3.14f/2)*25+xcenter);
xh=(int)(Math.cos((dh*30+dm/2)*3.14f/180-3.14f/2)*18+xcenter);
ys=(int)(Math.sin(ds*3.14f/30-3.14f/2)*30+ycenter);
ym=(int)(Math.cos(dm*3.14f/30-3.14f/2)*25+ycenter);
yh=(int)(Math.cos((dh*30+dm/2)*3.14f/180-3.14f/2)*18+ycenter);
setLayout(new BorderLayout());
add(jPan,BorderLayout.WEST);
setBackground(Color.red);
add(control=new Control(this),BorderLayout.EAST);
control.setSize(200,450);
}
public void start()
{
if(runner==null)
{
runner=new Thread(this);
runner.start();
}
}
public void run()
{
while(runner!=null)
{
try{runner.sleep(timeout);}
catch(InterruptedException e){}
repaint();
}
}
public void update(Graphics g)
{
if(offScreenImage==null) offScreenImage=createImage(300,450);
offScreenG.clipRect(1,1,299,449);
paint(offScreenG);
//g=getGraphics();//??
//g.clipRect(1,1,299,449);//??
g.drawImage(offScreenImage,0,0,this);
}
public void paint(Graphics g)
{
String today;
Date dat=new Date();
cal.setTime(dat);
today=df.format(dat);
//current time
ds=(int)cal.get(Calendar.SECOND);
dm=(int)cal.get(Calendar.MINUTE);
dh=(int)cal.get(Calendar.HOUR_OF_DAY);
//point location
xs=(int)(Math.cos(ds*3.14f/30-3.14f/2)*30+xcenter);
xm=(int)(Math.cos(dm*3.14f/30-3.14f/2)*25+xcenter);
xh=(int)(Math.cos((dh*30+dm/2)*3.14f/180-3.14f/2)*18+xcenter);
ys=(int)(Math.sin(ds*3.14f/30-3.14f/2)*30+ycenter);
ym=(int)(Math.cos(dm*3.14f/30-3.14f/2)*25+ycenter);
yh=(int)(Math.cos((dh*30+dm/2)*3.14f/180-3.14f/2)*18+ycenter);
//paint point
g.drawLine(xcenter,ycenter-1,xm,ym);
g.drawLine(xcenter-1,ycenter,xm,ym);
g.drawLine(xcenter,ycenter-1,xh,yh);
g.drawLine(xcenter-1,ycenter,xh,yh);
g.drawString(today,95,400);
g.drawImage(offScreenImage,0,0,this);
}
public void stop()
{
runner=null;
}
}class Control extends JPanel implements ItemListener,ActionListener
{
MimiClock mc;
JLabel err;
JTextField h,m,s;
JComboBox jcb;
JButton onButton,offButton;
public Control(MimiClock mcp)
{
mc=mcp;
setLayout(new BorderLayout());
JPanel jcon=new JPanel();
jcon.setLayout(new GridLayout(12,1));
jcon.add(new JLabel());
jcon.add(new JLabel());
jcon.add(new JLabel());
JPanel jcon1=new JPanel();
jcon.setLayout(new FlowLayout(FlowLayout.LEFT));
jcon1.add(new JLabel("set time clock"));
jcon1.add(h=new JTextField());
jcon1.add(new JLabel("hour"));
jcon1.add(m=new JTextField());
jcon1.add(new JLabel("minuts"));
jcon1.add(s=new JTextField());
jcon1.add(new JLabel("second"));
jcon.add(jcon1);
JPanel jcon2=new JPanel();
jcon2.setLayout(new FlowLayout(FlowLayout.LEFT));
jcon2.add(new JLabel("set anim"));
jcb=new JComboBox();
jcb.addItemListener(this);
jcb.addItem("anim1--8:30");
jcb.addItem("anim2--12:00");
jcb.addItem("anim3--17:30");
jcon2.add(jcb);
jcon.add(jcon2);
jcon.add(err=new JLabel("not set Clock"));
jcon.add(new JLabel());
JPanel jcon3=new JPanel();
jcon3.setLayout(new FlowLayout(FlowLayout.CENTER));
onButton=new JButton("Set");
onButton.addActionListener(this);
offButton=new JButton("Clear");
offButton.addActionListener(this);
jcon3.add(onButton);
jcon3.add(new JLabel());
jcon3.add(offButton);
jcon.add(jcon3);
jcon.add(new JLabel());
jcon.add(new JLabel());
JPanel jcon4=new JPanel();
jcon.setLayout(new FlowLayout(FlowLayout.CENTER));
jcon4.add(new JLabel("Mimi Clock"));
jcon.add(jcon4);
jcon.add(new JLabel());
add(jcon,BorderLayout.CENTER);//??
}
public void itemStateChanged(ItemEvent e)
{
}
public void actionPerformed(ActionEvent e)
{
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawString("aaa",0,60);
}
}
解决方案 »
- 请教关于Socket的close()会阻塞的问题。
- 谁能给一个swing包的类图?谢谢!
- 关于“向上类型转换”
- javac 时的 -sourcepath,它有什么用处?
- 页面有个播放器,播放歌曲,然后根据播放的歌曲,生成一个选择题,让选择现在播放的歌曲的名字,怎么来实现?
- 如何使用另一种颜色填充图中的一块连续的同一颜色区域?
- 继承的问题,大家帮忙看看
- 向新浪这些综合网站每一篇新闻的下方都有此新闻的相关连接,这是如何实现的?
- 求助??关于退出时保存的问题??
- >>>>>package路径设置:谁都会有的一个困惑<<<<<
- ResultSet rs = stmt.executeQuery(sql);的问题!
- 下载的lookandfeel怎么使用啊?
这是init()最后几句getContentPane().setLayout(new BorderLayout()); //setLayout(new BorderLayout());
getContentPane().add(jPan,BorderLayout.WEST);
setBackground(Color.red);
getContentPane().add(control=new Control(this),BorderLayout.EAST);
control.setSize(200,450);
还是不可以,用<Applet code=MimiClock.class width=500 height=450></applet>显示时,jwelcome看不见,CONTROL类的任何组件也不可见,必须要鼠标放在组件上,组件才显示。
一下贴这么长代码,大部分都不会看的。