Wasserglasspiel

Status
Nicht offen für weitere Antworten.

777

Bekanntes Mitglied
Habe eben ein Spiel geschrieben und möchte da auf dem Applet nun gerne ein JLabel anbringen. Doch der Compiler nimmt meinen code nicht... ich hoffe ihr findet euch ein bisschen zurecht...


Code:
import java.awt.*;
import java.applet.*;
import symantec.itools.awt.DirectionButton;
import javax.swing.*;

public class Applet1 extends java.applet.Applet implements Runnable 
{
    int zeitlich=0,schlaf=40,x=-20,y=-20,ho=20,br=10,eimerx=0,eimery=266,eimerh=70,wind=2,eimerb=50,geschw=1,wasserstand=0,waterstand=0; //VARIABLEN int
    int r=170,g=170,b=255;
    boolean linkss=true; //VARIABLEN boolean
    Thread wasser = null;  //Thread "wasser" wird zu Anfang auf "nichts" gesetzt.
 
    javax.swing.JLabel caption = new javax.swing.JLabel();  
	public void init()
	{
		add(wassser);
		wassser.setBackground(java.awt.Color.white);
		wassser.setBounds(0,0,1,1);
		setLayout(null);
		setBackground(new java.awt.Color(183,203,255));
		setSize(563,429);
		add(eimer);
		eimer.setBackground(java.awt.Color.cyan);
		eimer.setBounds(136,266,50,70);
		add(links);
		links.setBounds(24,384,15,15);
		try {
			unten.setDirection(symantec.itools.awt.DirectionButton.DOWN);
		}
		catch(java.beans.PropertyVetoException e) { }
		add(unten);
		unten.setBounds(48,408,15,15);
		try {
			rechts.setDirection(symantec.itools.awt.DirectionButton.RIGHT);
		}
		catch(java.beans.PropertyVetoException e) { }
		add(rechts);
		rechts.setBounds(72,384,15,15);
		try {
			oben.setDirection(symantec.itools.awt.DirectionButton.UP);
		}
		catch(java.beans.PropertyVetoException e) { }
		add(oben);
		oben.setBounds(48,360,15,15);
		stopp.setLabel("Start");
		add(stopp);
		stopp.setBackground(java.awt.Color.green);
		stopp.setFont(new Font("Dialog", Font.BOLD, 12));
		stopp.setBounds(480,396,77,28);
		add(bottom);
		bottom.setBackground(java.awt.Color.black);
		bottom.setBounds(0,336,564,3);
		ausgabe.setText("0");
		add(ausgabe);
		ausgabe.setBounds(324,384,144,24);
		waters.setText("Wasserstand:");
		add(waters);
		waters.setBounds(240,384,84,24);
		MS.setText("ms");
		add(MS);
		MS.setBounds(180,384,24,24);
		add(millisek);
		millisek.setBounds(132,384,46,24);

		SymMouse aSymMouse = new SymMouse();
		stopp.addMouseListener(aSymMouse);
		links.addMouseListener(aSymMouse);
		rechts.addMouseListener(aSymMouse);
		oben.addMouseListener(aSymMouse);
		unten.addMouseListener(aSymMouse);
        add(caption);
        caption.setBounds(22,22,22,22);
        caption.setBackground(Color.red);
	}
	
 
	java.awt.Button wassser = new java.awt.Button();
	java.awt.Label eimer = new java.awt.Label();
	symantec.itools.awt.DirectionButton links = new symantec.itools.awt.DirectionButton();
	symantec.itools.awt.DirectionButton unten = new symantec.itools.awt.DirectionButton();
	symantec.itools.awt.DirectionButton rechts = new symantec.itools.awt.DirectionButton();
	symantec.itools.awt.DirectionButton oben = new symantec.itools.awt.DirectionButton();
	java.awt.Button stopp = new java.awt.Button();
	java.awt.Canvas bottom = new java.awt.Canvas();
	java.awt.Label ausgabe = new java.awt.Label();
	java.awt.Label waters = new java.awt.Label();
	java.awt.Label MS = new java.awt.Label();
	java.awt.Label millisek = new java.awt.Label();


	
	..................................
 

The_S

Top Contributor
Fehlermeldung!

Wird wohl kaum jemand das Ding kopieren, diese symantec tools sich besorgen und testen, geschweigeden den kompletten Code in Gedanken durchgehen ...

[edit] Du importierst schon, dann musst du net extra nochma daraufhinweisen, wo die Klasse liegt (z. B. statt java.awt.Label einfach Label schreiben).

Jetzt isses ja schonmal übersichtlicher (Code gekürzt), aber Fehler weiß man so auch net ...
 

Leroy42

Top Contributor
Ohne deinen Code zu durchforsten:

:noe: Mische nie AWT und Swing :noe:

Du leitest von Applet (nicht JApplet) ab, benutzt die AWT-Componenten Button, Canvas, Label.

Dann darfst du keine Swing-Komponente wie JLabel verwenden; weil iss :bae:
 

777

Bekanntes Mitglied
Doch nicht so ganz. Hier habe ich grad mal ein kleines Nebenprogramm geschrieben und hier gehts :-(


Code:
import java.awt.*;
import java.applet.*;
import javax.swing.JLabel;

public class Applet1 extends Applet
{
	public void init()
	{
		setLayout(null);
		setSize(426,266);
		
		JLabel1.setText("J LABEL :-)");
		add(JLabel1);
		JLabel1.setBounds(132,96,69,28);
		button1.setLabel("button");
		add(button1);
		button1.setBackground(java.awt.Color.lightGray);
		button1.setBounds(120,168,76,40);
	}
	
	javax.swing.JLabel JLabel1 = new javax.swing.JLabel();
	java.awt.Button button1 = new java.awt.Button();
}
 

The_S

Top Contributor
Es KANN zu Komplikationen kommen, muss aber nicht zwangsweise.

Und wie gesagt, wenn du importierst lass den Pfad weg, es sei denn du verwendest ne Klasse die in zwei verschiedenen Packages existiert.
 

Leroy42

Top Contributor
Das ist ja das Problem: Manchmal funktionierts, meistens gibts Probleme.

Die Swing-Komponenten sind sogenannt light-weight-components, soll heißen,
daß diese von Java selbst erzeugt und gezeichnet werden.

AWT Komponenten sind heavy-weight-components: Sie werden vom
darunterliegenden BS verwaltet. Bei komplexeren GUIs passiert es sehr schnell,
daß diese heavy-weights die light-weights überlagern. Ich glaube daß hat damit
zu tun, daß die BS-Komponenten vom BS verwaltet werden und sich einen
Dreck darum scheren, daß es da noch andere, sensiblere Komponenten gibt.

Dies aus dem einfachen Grund, daß das BS ja gar nichts von den anderen Komponenten
weiß (wissen soll).

Aber da gibts bestimmt andere, die dir das besser erklären können.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben