[Java] Applet draait niet onder xp, wel onder 98

Pagina: 1
Acties:

  • Fles
  • Registratie: Augustus 2001
  • Laatst online: 06-04-2023
Ik heb een timer gemaakt in Java. Deze werkt prima onder 98 maar niet onder xp. Ik weet niet zeker of het aan de browser ligt. In de applet viewer doet hij het wel. Andere applets doen het wel, maar deze dus niet.

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Color;
import java.lang.Runnable;

public class TimeThis extends Applet implements Runnable
{

  private String getSeconds(int irem_time)
  {
    String sec = String.valueOf((int)(irem_time % 60));
    return sec;
  }

  private String getMinutes(int irem_time)
  {
    String min = String.valueOf((int)(Math.floor((irem_time / 60) % 60)));
    return min;
  }

  private String getHours(int irem_time)
  {
    String hour = String.valueOf((int)(Math.floor(irem_time / 3600)));
    return hour;
  }

  private String addZero(String itime)
  {
    int length = itime.length();

    if (length == 1)
      itime = "0" + itime;

    return itime;
  }

  private int getRem(int istart_time, int itotal_time)
  {
    int current_time = Math.round((int)System.currentTimeMillis()/1000);
    int rem_time = itotal_time - (current_time - istart_time);
    return rem_time;
  }

  private int getLines(int imax_time, int irem_time, int imax_lines)
  {
    int lines_done;

    if (irem_time > 0)
    {
      int time_done = imax_time - irem_time;
      double lines_per_sec = (float)(imax_lines) / (float)(imax_time);
      lines_done = (int)Math.round(lines_per_sec * time_done);
    } else
    {
      lines_done = imax_lines;
    }

    return lines_done;
  }

  private void drawTimer(Graphics ig, int imax_time, int irem_time, int ileft, int itop, int iwidth, int iheight)
  {
    int lines_done = getLines(imax_time, irem_time, iwidth - 2);
    ig.setColor(Color.blue);
    ig.fillRect(ileft + 1 , itop, lines_done, iheight);
    ig.setColor(Color.white);
    ig.drawRect(ileft , itop, iwidth - 1, iheight);
  }

  private void drawTime(Graphics ig, int irem_time, int ileft, int itop)
  {
    String sec = getSeconds(irem_time);
    String min = getMinutes(irem_time);
    String hour = getHours(irem_time);

    sec = addZero(sec);
    min = addZero(min);

    ig.setColor(Color.white);
    ig.drawString(hour + ":" + min + ":" + sec, ileft, itop);
  }

  private Thread timerThread = null;
  private int start_time = 0;
  private int max_time = 0;
  private int total_time = 0;
  private int rem_time = 0;
  public void start()
  {
    if (timerThread == null)
    {
      start_time = Math.round((int)System.currentTimeMillis()/1000);

      try
      {
        max_time = Integer.parseInt(getParameter("max_time"));
        total_time = Integer.parseInt(getParameter("rem_time"));
      } catch (NumberFormatException ne)
      {
        //Doesn't work
      }

      timerThread = new Thread(this, "TimeThis");
      timerThread.start();
    }
  }

  public void run()
  {
    Thread thisThread = Thread.currentThread();

    rem_time = getRem(total_time, start_time);

    while (timerThread == thisThread && rem_time > 0)
    {
      repaint();
      rem_time = getRem(total_time, start_time);
      try
      {
        Thread.sleep(1000);
      } catch (InterruptedException ie)
      {
        //No sleeping
      }
    }
    repaint();
  }

  public void stop()
  {
    timerThread = null;
  }

  public void paint(Graphics g)
  {
    int width = 60;
    int height = 25;
    int distance = 5;

    width = (width < 50) ? 50 : width;
    distance = (distance < 0) ? 0 : distance;
    height = (height - 10 - distance < 5) ? 15 + distance : height;

    g.setColor(Color.black);
    g.fillRect(0, 0, width, height);

    int text_left = (width / 2) - 22;
    drawTimer(g, max_time, rem_time, 0, 0, width, height - 10 - distance);
    drawTime(g, rem_time, text_left, height);
  }

}


Zou iemand me kenne helpen. Ik ving ergens iets op dat xp heel precies kijkt op Threading. Ik heb al andere manieren geprobeerd, zonder succes :(

[ Voor 4% gewijzigd door Fles op 09-04-2003 22:31 ]


  • Postman
  • Registratie: Februari 2000
  • Laatst online: 15-08 20:11
Draai je toevallig de standaard JVM van XP (ik neem aan dat je die hebt omdat je wel applets kunt zien) of gebruik je J2SE 1.4.1? Kan goed dat het aan je JVM ligt...

Ow ja, ik heb zelf geen problemen met applets die Threading gebruiken onder XP (behalve dan dat ik lokaal geen applets kan bekijken met IE, maar gelukkig heb je nog altijd Mozilla ;))

[ Voor 37% gewijzigd door Postman op 09-04-2003 23:01 ]


  • Fles
  • Registratie: Augustus 2001
  • Laatst online: 06-04-2023
Ik draai J2SE 1.4.1_2

Het zal aan IE 6.0 liggen, maar ondertussen zit ik er nog wel mee. Het leeuwendeel gebruikt IE dus ik moet hem goed krijgen daar in.

[ Voor 93% gewijzigd door Fles op 09-04-2003 23:08 ]


  • Postman
  • Registratie: Februari 2000
  • Laatst online: 15-08 20:11
Mmm. Wat voor error krijg je precies?? (is wel makkelijk om te weten)

Probeer anders eens Mozilla 1.3a (als je tot nu toe alleen maar IE hebt gebruikt).

  • Fles
  • Registratie: Augustus 2001
  • Laatst online: 06-04-2023
FlamerX schreef op 09 April 2003 @ 23:08:
Mmm. Wat voor error krijg je precies?? (is wel makkelijk om te weten)

Probeer anders eens Mozilla 1.3a (als je tot nu toe alleen maar IE hebt gebruikt).
95% van de internetters gebruikt IE, al draait hij nog zo goed in Mozilla, ik wil hem goed hebben in IE :)

Geen error, hij geeft gewoon grijs weer.

[ Voor 6% gewijzigd door Fles op 09-04-2003 23:10 ]


  • Postman
  • Registratie: Februari 2000
  • Laatst online: 15-08 20:11
Graveheart schreef op 09 april 2003 @ 23:09:
[...]

95% van de internetters gebruikt IE, al draait hij nog zo goed in Mozilla, ik wil hem goed hebben in IE :)
Tja, helaas is het wel zo ja...(dat bijna iedereen IE gebruikt). Het kan ook makkelijk zijn soms, maar voor de multiplatform ontwikkelaars is het een ware hel.

Ik zou toch nog steeds graag willen weten wat voor foutmelding(en) je krijgt.
Ow ja, in een catch zet je meestal een error.printstacktrace(); ipv een comment regel :X

  • Fles
  • Registratie: Augustus 2001
  • Laatst online: 06-04-2023
Waar kan ik zien wat voor foutmelding ik krijg? Ik heb console aangezet, maar joost mag weten waar dat ding is. (Ben gister begonnen met Java)

Ik heb het Runnable stuk letterlijk overgenomen van een voorbeeld van java.sun.com, maar nog weigeren...

[ Voor 40% gewijzigd door Fles op 09-04-2003 23:20 ]


  • Postman
  • Registratie: Februari 2000
  • Laatst online: 15-08 20:11
Console vindt je in de taakbalk (rechtsonder bij klok). Zodra je een applet draait komt daar zo'n leuk koffie kopje te staan ;)

Code van Sun moet meestal wel werken. Maar helaas worden veel problemen veroorzaakt door MS.

  • Fles
  • Registratie: Augustus 2001
  • Laatst online: 06-04-2023
Staat geen koffie kopje... Moet ik dan webstart hebben?

  • Fles
  • Registratie: Augustus 2001
  • Laatst online: 06-04-2023
Hier heb je de link. Misschien dat jij het voor elkaar krijgt de foutmelding te achterhalen, ik krijg die console niet voor elkaar.

http://www.ziso.nl/applet/TimeThis.html

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 10:39

Janoz

Moderator Devschuur®

!litemod

Hij werkt hier gewoon. Waarschijnlijk zal het al een stuk gaan helpen waneer je niet de applet tag gebruikt. Als het goed is zit er in de bin dir van J2SDK een html convertor (oid). Gooi hier je html doorheen en waarschijnlijk zal IE dan wel de juiste VM pakken/downloaden.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Postman
  • Registratie: Februari 2000
  • Laatst online: 15-08 20:11
IE doet het bij mij ook niet, maar Mozilla wel.

En zoals Janoz al zei: het ligt aan de applet tag. Het heeft iets te maken met codebase. Schijnbaar wil IE daar geen gebruik van maken ofzo, en daarom krijg je een "applet not found" error ("class not found" kan ook. Error krijg je alleen te zien als je je muis over de applet beweegt, dan komt ie ff snel voorbij linksonder in IE).

Verwijderd

nee de applet tag is domweg deprecated. Het moet nu middels embed. Dus opzich redelijk terecht als het applet daardoor niet wordt opgestart.

  • Fles
  • Registratie: Augustus 2001
  • Laatst online: 06-04-2023
Ik had het al ergens gelezen op GoT, maar ik d8 dat dit een ander geval was :/

  • roelio
  • Registratie: Februari 2001
  • Niet online

roelio

fruitig, en fris.

Inderdaad, IE6 + MS JVM draait niet, Sun JVM 1.4.0 wel.

AMD Phenom II X4 // 8 GB DDR2 // SAMSUNG 830 SSD // 840 EVO SSD // Daar is Sinterklaas alweer!!


  • Fles
  • Registratie: Augustus 2001
  • Laatst online: 06-04-2023
Met tag converter doet hij het wel.
Maar met een oude versie van JDK ook. Dus ik heb hem gecompileerd met versie 1.0.2 en nu kan ik de applet tag wel gebruiken. Hoeven mensen op mijn site niet eerst Java te downloaden.
Pagina: 1