[Java] Op panels tekenen, tussen panels wisselen

Pagina: 1
Acties:

  • Rempage0611
  • Registratie: December 2000
  • Laatst online: 23-09-2025

Rempage0611

9405 WP @ 2x SMA Sunny Boy

Topicstarter
Ik heb nu 2 panels, de ene wordt gebruikt als het beginscherm, en op de 2e wordt een level van een spel weergegeven.

Het probleem is dat als ik op de knop beginnen klik, het spel moet worden weergegeven. In een applet viewer werkt dit wel, maar niet in de internet Explorer....

Ik zie het probleem _niet_ :? en ik wordt er helemaal gek van |:(

Dus hieronder staat de code van de hoofdklasse. Sorry dat het zo`n lap is maar ik kan het helaas niet inkorten omdat ik geen idee heb wat er mis is.
code:
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
import java.applet.*;
import java.awt.*;
import javax.swing.*;
/**
 * Dit is het auto, nu fiets-race-spel voor DND.
 *
 * @author M.Leijgraaf R.Hobo
 * @version %I%
 */


public class Racen extends Applet implements Runnable
  {
  Pauze pauze;
  Level levels;
  boolean levelScherm=false,beginScherm=true,eindScherm=false,overnachtScherm=false,uitlegScherm=false;
  Beginscherm beginscherm;
  Eindscherm eindscherm;
  Button stapje,loop,begin;
  int auto = 0;
  Image buffer,achtergrondImage;
  Graphics bufferG,panelGraphics;
  private Thread thread = null;
  JPanel levelPanel,beginPanel;
  int x;




  /**
  * Hier worden de buttons gedefinierd, en wordt er nog meer gedaan.
  */


  public void init (){
    levelPanel = new JPanel();
    beginPanel = new JPanel();
    add(levelPanel);
    add(beginPanel);
    levelPanel.setPreferredSize(new Dimension(640,480));
    beginPanel.setPreferredSize(new Dimension(640,480));
    levelPanel.setVisible(false);
    beginPanel.setVisible(true);
    levels = new Level();
    pauze = new Pauze();
    beginscherm = new Beginscherm();
    eindscherm = new Eindscherm();
    levelPanel.add(loop = new Button ( "loop"));
    levelPanel.add (loop);
    levelPanel.add(stapje = new Button ( "1 stapje" ));
    levelPanel.add(stapje);
    beginPanel.add(begin = new Button ( "Beginnen!"));
    }


    public void paint ( Graphics g ){
    if( bufferG == null ){ // Deze 3 regels code zijn nodig om het een en ander te definieren
      buffer = createImage( 640, 480 ); //maakt een leeg plaatje van 640*480 aan in de buffer
      bufferG = buffer.getGraphics();   //zet he huidige beeld in het de buffer
      }

    if (beginScherm==false){
      beginscherm.tekenen(bufferG);
      panelGraphics = beginPanel.getGraphics();
      panelGraphics.drawImage(buffer,0,0,640,480,this);
      panelGraphics.dispose();
      }

    if (levelScherm==true){
      if (levels.klaar==false){
        levels.teken(bufferG);
      }

      else{
        levels.besturing();
        panelGraphics = levelPanel.getGraphics();
        panelGraphics.drawImage(buffer,0,0,640,480,this);
        panelGraphics.dispose();
        levels.klaar=false;
      }
    }
    }

  public void start() {
    if (thread == null) {
    thread = new Thread(this);
    thread.start();
    }
    }

  public void stop() {
    thread.stop();
    thread = null;
  }


  public void run(){
    while (thread!=null){
    pauze.slaap(20);                 //wacht-mode
    repaint();
    }
    }

  public void update( Graphics g ){
    paint( g ); // Maak de tweede buffer schoon
    }

  public boolean action (Event e, Object o){
    if ( e.target == stapje ){
    }

    if ( e.target == loop){
    }

    if ( e.target == begin){
    beginPanel.setVisible(false);
    beginScherm=false;
    levelPanel.setVisible(true);
    levelScherm=true;
    }
    return false;
    }

 public boolean keyDown (Event e, int key){
    switch ( key )
    {
    case Event.LEFT: levels.fietslinks=true;
    break; 
    case Event.RIGHT: levels.fietsrechts=true;
    }
    return true;
    }

  public boolean keyUp (Event e, int key){
    switch ( key )
    {
    case Event.LEFT: levels.fietslinks=false;
    break;   case Event.RIGHT: levels.fietsrechts=false;
    }
    return true;
   }
}

  • MisterData
  • Registratie: September 2001
  • Laatst online: 07-09 20:23
Waarom moeilijk doen ?? Je kunt toch gewoon de remove() method gebruiken als je een paneltje weg wil hebben ?? en dan weer add() om hem terug te halen :? :)

  • Rempage0611
  • Registratie: December 2000
  • Laatst online: 23-09-2025

Rempage0611

9405 WP @ 2x SMA Sunny Boy

Topicstarter
Hmm, ff proberen

  • Rempage0611
  • Registratie: December 2000
  • Laatst online: 23-09-2025

Rempage0611

9405 WP @ 2x SMA Sunny Boy

Topicstarter
Dan krijg ik alleen maar een hele baal runtime, maar geen beeld

:'(

  • MisterData
  • Registratie: September 2001
  • Laatst online: 07-09 20:23
hmm :( Da's raar.... Heb je al in de Java Tutorial of in de API docs gekeken ???

  • Rempage0611
  • Registratie: December 2000
  • Laatst online: 23-09-2025

Rempage0611

9405 WP @ 2x SMA Sunny Boy

Topicstarter
Ja, ik lees me suf... Misschien heb ik er ook wel overheen gelezen ofzo... Ik zie het gewoon niet.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Weet je zeker dat de Java Plugin wordt gebruikt en niet de MS VM? Gebruik je de HTMLConverter?

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • MisterData
  • Registratie: September 2001
  • Laatst online: 07-09 20:23
Niet dat je het met de MS VM moet draaien, maar die zou het toch ook gewoon moeten kunnen ??? :)

  • Rempage0611
  • Registratie: December 2000
  • Laatst online: 23-09-2025

Rempage0611

9405 WP @ 2x SMA Sunny Boy

Topicstarter
Op zondag 02 december 2001 20:39 schreef mbravenboer het volgende:
Weet je zeker dat de Java Plugin wordt gebruikt en niet de MS VM? Gebruik je de HTMLConverter?
Nou je het zegt: Als ik pagina`s van sun open, krijg ik er zo`n kop koffie bij in de systray, en bij mijn spel niet....

Nou nog ff uitzoeken hoe ik de Java Plugin dan aan de praat moet krijgen...

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Hum, ik zag import javax.swing.* staan, dus ik ging er maar even vanuit dat er Swing in zat, wat dus niet zo is... Stom van me ;) .

Dan kan het inderdaad ook in de MS JVM draaien :) . Als dit gebeurt verklaart het ook gelijk het verschillende gedrag. Waardoor het precies wordt veroorzaakt zie ik niet zo 1,2,3.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Rempage0611
  • Registratie: December 2000
  • Laatst online: 23-09-2025

Rempage0611

9405 WP @ 2x SMA Sunny Boy

Topicstarter
Op zondag 02 december 2001 20:51 schreef mbravenboer het volgende:
Hum, ik zag import javax.swing.* staan, dus ik ging er maar even vanuit dat er Swing in zat, wat dus niet zo is... Stom van me ;) .

Dan kan het inderdaad ook in de MS JVM draaien :) . Als dit gebeurt verklaart het ook gelijk het verschillende gedrag. Waardoor het precies wordt veroorzaakt zie ik niet zo 1,2,3.
Hoe kan ik de java plugin gebruiken? Moet dat in de html source staan ofzo?

  • MisterData
  • Registratie: September 2001
  • Laatst online: 07-09 20:23
En in de Java Console staan geen foutmeldingen ofzo :?

  • Rempage0611
  • Registratie: December 2000
  • Laatst online: 23-09-2025

Rempage0611

9405 WP @ 2x SMA Sunny Boy

Topicstarter
Op zondag 02 december 2001 20:52 schreef MisterData het volgende:
En in de Java Console staan geen foutmeldingen ofzo :?
Nee, das het grappige...

Volgens mij kan Iexplorer gewoonweg niet het ene paneel uitzetten en een andere aan...

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Als je in IE of een andere browser van de java Plugin gebruik wilt maken kan je de Applet tag beter omzetten naar een Object tag. Dit doet de HTMLConverter voor je. Er wordt dan expliciet aangegeven dat je de Java Plugin wilt gebruiken. De HTMLConverter kan je los downloaden, maar hij zit ook in 1.3.x. Je kan natuurlijk ook gewoon uitzoeken hoe je hem zelf moet declareren met behulp van de Obje tag. De Applet tag is overigens zelfs deprecated door het W3C.

Je kunt ook de laatste beta 3 van 1.4.0 downloaden, deze installeert zich automatisch als volledige applet afhandelaar in IE :) (dus ook voor de Applet tags).

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • MisterData
  • Registratie: September 2001
  • Laatst online: 07-09 20:23
Dan klopt er toch echt iets niet in :

- je computer
- je plugin
- JE LOGICA :)

Controleer het allemaal nog es goed. Probeer het anders es in een applicatie te draaien. Werkt dat ?? Mooi dan is het dus IE ;) Werkt het niet ??? Dan nog eens goed kijken naar je prog en evt, in de Java Docs/Tutorial :)

  • Rempage0611
  • Registratie: December 2000
  • Laatst online: 23-09-2025

Rempage0611

9405 WP @ 2x SMA Sunny Boy

Topicstarter
Met de nieuwe Java plugin doet ie het nog steeds niet

:'( :'( :'( :'( :'( :'(

Nouja, ik ga ff wat anders doen, misschien zie ik het morgen wel....

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

Op zondag 02 december 2001 20:51 schreef mbravenboer het volgende:
Hum, ik zag import javax.swing.* staan, dus ik ging er maar even vanuit dat er Swing in zat, wat dus niet zo is... Stom van me ;) .

Dan kan het inderdaad ook in de MS JVM draaien :) . Als dit gebeurt verklaart het ook gelijk het verschillende gedrag. Waardoor het precies wordt veroorzaakt zie ik niet zo 1,2,3.
levelPanel = new JPanel();
beginPanel = new JPanel();
Er zit wel Swing in :?

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
wasigh: Er zit wel Swing in :?
Hum ja, beter kijken |:( .... en er worden ook AWT Buttons gebruikt. Dat is dus helemaal niks. Je moet of alleen AWT gebruiken of alleen Swing... De samenwerking verloopt meestal niet goed.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Rempage0611
  • Registratie: December 2000
  • Laatst online: 23-09-2025

Rempage0611

9405 WP @ 2x SMA Sunny Boy

Topicstarter
Ok, dus dan maar gewone Panels gebruiken ipv JPanels?

  • Rempage0611
  • Registratie: December 2000
  • Laatst online: 23-09-2025

Rempage0611

9405 WP @ 2x SMA Sunny Boy

Topicstarter
Ik heb ff met iemand gepraat, en die JPanels is niet echt een probleem. Het probleem wat ik heb, na veel proberen, is dat het beginPanel volgens mij op de voorgrond blijft staan. Hierdoor wordt levelPanel niet weergegeven. Als ik de add. regels omdaai, zie ik alleen het levelPanel en niet beginPanel.


In de source werkt remove(beginPanel); niet in de appletviewer, maar beginPanel.setVisible(false); werkt wel....

Verder heb ik HTMLConverter gebruikt, ik zal hier ff de html source tonen, misschien is het ook iets mis mee :?
code:
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
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1252">
<TITLE>
HTML Test Page
</TITLE>
</HEAD>
<BODY>
racespel.racen will appear below in a Java enabled browser.<BR>
<!--"CONVERTED_APPLET"-->
<!-- CONVERTER VERSION 1.3 -->
<OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
WIDTH = 640 HEIGHT = 480 NAME = "TestApplet" ALIGN = middle VSPACE = 0 
(ff enter,anders is de layout helemaal stuk)
HSPACE = 0  codebase="http://java.sun.com/products/plugin/1.3/jinstall-13-win32.cab#Version=1,3,0,0">
<PARAM NAME = CODE VALUE = "racen.class" >
<PARAM NAME = CODEBASE VALUE = "." >
<PARAM NAME = NAME VALUE = "TestApplet" >

<PARAM NAME="type" VALUE="application/x-java-applet;version=1.3">
<PARAM NAME="scriptable" VALUE="false">


</OBJECT>

<!--
<APPLET CODE = "racen.class" CODEBASE = "." WIDTH = 640 HEIGHT = 480 NAME = "TestApplet" ALIGN = middle VSPACE = 0 HSPACE = 0>


</APPLET>
-->
<!--"END_CONVERTED_APPLET"-->

</BODY>
</HTML>

Verder wil ik alvast iedereen bedanken die het tijd heeft ingestoken, om mij te helpen :Y)

  • Rempage0611
  • Registratie: December 2000
  • Laatst online: 23-09-2025

Rempage0611

9405 WP @ 2x SMA Sunny Boy

Topicstarter
:) Ik heb `m !

De panels worden nu d.m.v. CardLayout getoond, en dan werkt het wel :z

  • MisterData
  • Registratie: September 2001
  • Laatst online: 07-09 20:23
Een CardLayout is inderdaad precies bedoeld voor wat jij nodig hebt, stom dat we daar niet aan dachten |:( Maar die gebruik ik dan ook nooit :)

  • Rempage0611
  • Registratie: December 2000
  • Laatst online: 23-09-2025

Rempage0611

9405 WP @ 2x SMA Sunny Boy

Topicstarter
Op maandag 03 december 2001 19:29 schreef MisterData het volgende:
Een CardLayout is inderdaad precies bedoeld voor wat jij nodig hebt, stom dat we daar niet aan dachten |:( Maar die gebruik ik dan ook nooit :)
Ik heb het uiteindelijk in een ander topic hier op GoT gelezen. En ik heb weer het een en ander geleerd..

Thnx Allemaal!
Pagina: 1