黑马程序员技术交流社区

标题: applet学习疑惑! [打印本页]

作者: 逍林游    时间: 2013-1-30 18:30
标题: 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();
  }
   
      
}
作者: 高境    时间: 2013-2-1 19:15
怎么没人回答的
作者: 铿锵科技    时间: 2013-2-1 20:18
因为不懂所以没人答
作者: 赵熠东(赵东东)    时间: 2013-2-16 22:03
本帖最后由 赵熠东(赵东东) 于 2013-2-16 22:06 编辑

只要将 invalidate(); validate();替换成repaint();就行了,另外我在myeclipse中运行的时候并没有出现tf1不聚焦的现象,完整代码如下
  1. package TestJava;

  2. import java.applet.*;
  3. import java.awt.*;
  4. import java.awt.event.*;

  5. public class LineGraph extends Applet implements ActionListener {
  6.         int a1, a2, a3, a4, a5;
  7.         Label Title = new Label(
  8.                         "Enter 5 daily temperatures and press ENTER in box 5");
  9.         Label day1 = new Label("Day1");
  10.         TextField tf1 = new TextField("");
  11.         Label day2 = new Label("Day2");
  12.         TextField tf2 = new TextField("");
  13.         Label day3 = new Label("Day3");
  14.         TextField tf3 = new TextField("");
  15.         Label day4 = new Label("Day4");
  16.         TextField tf4 = new TextField("");
  17.         Label day5 = new Label("Day5");
  18.         TextField tf5 = new TextField("");

  19.         public void init() {
  20.                 add(Title);
  21.                 add(day1);
  22.                 add(tf1);
  23.                 add(day2);
  24.                 add(tf2);
  25.                 add(day3);
  26.                 add(tf3);
  27.                 add(day4);
  28.                 add(tf4);
  29.                 add(day5);
  30.                 add(tf5);
  31.                 tf5.addActionListener(this);
  32.                 tf4.addActionListener(this);
  33.                 tf3.addActionListener(this);
  34.                 tf2.addActionListener(this);
  35.                 tf1.addActionListener(this);

  36.                 tf1.requestFocus();

  37.         }

  38.         public void paint(Graphics g) {

  39.                 g.drawLine(20, 300, 180, 300); // 温度变化曲线
  40.                 g.drawLine(20, 70, 20, 300);
  41.                 g.drawLine(20, (300 - 4 * a1), 60, (300 - 4 * a2));
  42.                 g.drawLine(60, (300 - 4 * a2), 100, (300 - 4 * a3));
  43.                 g.drawLine(100, (300 - 4 * a3), 140, (300 - 4 * a4));
  44.                 g.drawLine(140, (300 - 4 * a4), 180, (300 - 4 * a5));

  45.         }

  46.         public void actionPerformed(ActionEvent arg0) {
  47.                 a1 = Integer.parseInt(tf1.getText());
  48.                 a2 = Integer.parseInt(tf2.getText());
  49.                 a3 = Integer.parseInt(tf3.getText());
  50.                 a4 = Integer.parseInt(tf4.getText());
  51.                 a5 = Integer.parseInt(tf5.getText());
  52.                 //invalidate();
  53.                 //validate();
  54.                 repaint();
  55.         }

  56. }
复制代码

QQ截图20130216220011.png (31.25 KB, 下载次数: 23)

QQ截图20130216220011.png





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