黑马程序员技术交流社区

标题: applet的问题 [打印本页]

作者: 周洋    时间: 2012-3-11 23:13
标题: applet的问题
为什么tf1.requestFocus();不聚焦;
为什么我写上了invalidate();validate();,还要缩放一下applet温度变化曲线才会出来!

刚学习这个,所以还不太熟悉,请帮下忙,下面是部分代码!!

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class LineGraph extends Applet implements ActionListener
{
       int a1,a2,a3,a4,a5;
       Label Title=new Label("Enter 5 daily temperatures and press ENTER in box 5");
       Label day1=new Label("Day1");
       TextField tf1=new TextField("");
       Label day2=new Label("Day2");
       TextField tf2=new TextField("");
       Label day3=new Label("Day3");
       TextField tf3=new TextField("");
       Label day4=new Label("Day4");
       TextField tf4=new TextField("");
       Label day5=new Label("Day5");
       TextField tf5=new TextField("");
      
      
       public void init()
       {
             add(Title);
             add(day1);
             add(tf1);
             add(day2);
             add(tf2);
             add(day3);
             add(tf3);
             add(day4);
             add(tf4);
             add(day5);
             add(tf5);
             tf5.addActionListener(this);
             tf4.addActionListener(this);
             tf3.addActionListener(this);
             tf2.addActionListener(this);
             tf1.addActionListener(this);
            
             tf1.requestFocus();
            
       }
      
      
      
       public void paint(Graphics g)
       {
            
            
             g.drawLine(20,300,180,300);                   //温度变化曲线
             g.drawLine(20, 70, 20, 300);
             g.drawLine(20,(300-4*a1),60,(300-4*a2));
             g.drawLine(60,(300-4*a2),100,(300-4*a3));
             g.drawLine(100,(300-4*a3),140,(300-4*a4));
             g.drawLine(140,(300-4*a4),180,(300-4*a5));
            
            
         
       }

  public void actionPerformed(ActionEvent arg0)
  {
        a1=Integer.parseInt(tf1.getText());
           a2=Integer.parseInt(tf2.getText());
           a3=Integer.parseInt(tf3.getText());
           a4=Integer.parseInt(tf4.getText());
           a5=Integer.parseInt(tf5.getText());
           invalidate();
          validate();
  }

作者: 刘蕴学    时间: 2012-3-12 01:10
本帖最后由 了无尘 于 2012-3-12 19:24 编辑

因为eclipse启动applet是通过创建一个简单的html页面调用该applet,在这个html页面的默认设置是applet的显示区大小为200 200 ,你的显示区大于这个,所以你必须放大窗口才能看见

当然那个函数是做组件检查的,正常你不缩放窗体applet是不会重绘的,需要你手动repaint()




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2