You are not logged in.

  • Login

1

Tuesday, June 17th 2008, 8:12pm

Bild einfügen...

Also ich hab mir gerade mal angeguckt wie man ein Bild in ein Java Programm einfügt. In meiner Dokumentation sind zwar die methoden aber kein Beispiel für die Anwendung angegeben ... ich hab also mal auf gut Glück n bissl was probiert und das is bei rausgekommen :

Java Quellcode

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
import sum.multimedia.*;
public classcar
{
Bild bild;
private boolean zAktiv;
private double zGe;
public car(int pH,int pV,double pGe)
{
    bild = new Bild(pH,pV,100,100,"C:\auto.jpg"); < In dieser Zeile gibs außerdem nen Error "illegal escape character" 
    bild.ladeBild();
    zAktiv = false;
    this.zeichneDich();
}
public void zeichneDich()
{
    bild.zeige();
}
public void bewegeBis(double pH,double pV)
{
    bild.setzePosition(pH,pV);
}
public void loescheDich()
{
    bild.verstecke();
}
public void gibFrei()
{
    this.loescheDich();
    bild.gibFrei();
}
public boolean aktiv()
{
    return zAktiv;
}
public void saktiv(boolean pB)
{
    zAktiv = pB;
}
public double ge()
{
    return zGe;
}
public void sge(double pW)
{
    zGe = pW;
}
}

Hab also n Bild von nem Auto gemalt (Paint ftw ^^) und das in c/: abgespeichert.

Sehr toll ich weiß.
Hatte n bisschen damit zu kämpfen das die Klasse Bild keine Positionsabfrage hat, jedenfalls beim starten krieg ich immer ne NullPointerException

java.lang.NullPointerException
at sum.multimedia.Bild.<init>;(Bild.java:103)
at Auto.<init>;(Auto.java:9)
at KnopfAnwendung.<init>;(KnopfAnwendung.java:19)
at main.main(main.java:5)

im Konstrucktor vom car :

Java Quellcode

1
2
3
4
5
6
7
public car(int pH,int pV,double pGe)
{
    bild = new Bild(pH,pV,100,100,"C/:auto.jpg");
    bild.ladeBild();
    zAktiv = false;
    this.zeichneDich();
}


Hier mal die Anwendung :

Java Quellcode

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
import sum.kern.*;
public class KnopfAnwendung extends EreignisAnwendung
{
	// Bezugsobjekte
	private int count;
	private double ge;
	RechteckKnopf RK;
	RechteckKnopf RK2;
	RechteckKnopf RK3;
	Auto auto;
	Buntstift stift;
 
	public KnopfAnwendung(int pH,int pV)
	{
    	super(pH,pV);
    	RK = new RechteckKnopf(this.bildschirm().breite()/4,this.bildschirm().hoehe()-50,this,1,"Fahr los !");
    	RK2 = new RechteckKnopf(this.bildschirm().breite()/4*2,this.bildschirm().hoehe()-50,this,2,"Halt an !");
    	RK3 = new RechteckKnopf(this.bildschirm().breite()/4*3,this.bildschirm().hoehe()-50,this,3,"Bremse !");
    	auto = new Auto(this.bildschirm().breite()/5,this.bildschirm().hoehe()-100,0.00);
    	stift = new Buntstift();
	}
	public void bearbeiteMausDruck(double pH,double pV)
	{
    	RK.bearbeiteMausDruck(pH,pV);
    	RK2.bearbeiteMausDruck(pH,pV);
    	RK3.bearbeiteMausDruck(pH,pV);
	}
 
	public void bearbeiteMausLos(double pH,double pV)
	{
    	RK.bearbeiteMausLos(pH,pV);
    	RK2.bearbeiteMausLos(pH,pV);
    	RK3.bearbeiteMausLos(pH,pV);
	}
	public void bearbeiteMausDoppelKlick(double pH,double pV){};
	public void bearbeiteMausBewegt(double pH,double pV)
	{
    	RK.bearbeiteMausBewegt(pH,pV);
    	RK2.bearbeiteMausBewegt(pH,pV);
    	RK3.bearbeiteMausBewegt(pH,pV);
	}
	public void bearbeiteTaste(char pZeichen){};
	public void idle()
	{
    	auto.bewegeBis(stift.hPosition(),stift.vPosition());
    	if(auto.aktiv())
    	{
        	if(count == 1)
        	{
            	if(auto.ge() > 0)
            	{
                	auto.sge(auto.ge()-0.0001);
            	}
            	else
            	{
                	count = 0;
                	auto.saktiv(false);
            	}
        	}
        	else
        	{
            	if(auto.ge() < 0.1)
            	{
                	auto.sge(auto.ge()+0.0001);
            	}
        	} 
 
        	if(stift.hPosition() >= this.bildschirm().breite())
        	{
            	stift.bewegeBis(0,stift.vPosition());
        	}
        	else
        	{
            	stift.bewegeBis(stift.hPosition()+auto.ge(),stift.vPosition());
        	}
    	}
	}
	public void action(int pN)
	{
    	switch(pN)
    	{
        	case 1 : auto.saktiv(true);break;
        	case 2 : auto.saktiv(false);break;
        	case 3 : count = 1;break;
    	}
	}
 
}

Des Problem is das man die gesamte Grundstruktur des Programm noch manuell einrichten muss von wegen ereignisbearbeitung ...
falls einer ne idde hat was ich falsch gemacht habe wärs nett wenn er sie mir mitteilt.

This post has been edited 1 times, last edit by "möP" (Jun 17th 2008, 8:22pm)


2

Tuesday, June 17th 2008, 9:02pm

Wenn der Konstruktor von sum.multimedia.Bild einen Error wirft, dann sollte man die Klasse Bild mal anschauen bzw. ihre Dokumentation lesen. Da das aber keine allgemeingültige Java-Klasse ist und du auch nicht den Quellcode der Klasse gepostet hast, kann ich dir nur schwer helfen.

3

Tuesday, June 17th 2008, 10:09pm

tja die sache is das des ganze ne geschlossene .jar datei is die ich auch net einsehen kann ...

4

Tuesday, June 17th 2008, 10:20pm

Wo hast du die JAR denn her? Gibt es dort keine Dokumentation?

5

Wednesday, June 18th 2008, 6:04am

Den Fehler "illegal escape character" kannst du umgehen, in dem du entweder:
1. "\" durch "/" ersetzt
2. "\" durch "\\" ersetzt

Grund: "\" ist ein spezielles Zeichen und muss daher speziell behandelt werden (Bsp.: "\n" für "neue Zeile")

hth

6

Wednesday, June 18th 2008, 12:49pm

habs auch scho korrigiert ... hätt mir nur die fehler meldung richtig durchlesen müssen... bleib aber immer noch das Problem mit der Nullpointerexception... die Klasse Bild is irgendwie ein wenig seltsam sie hat viele Funktionen von nem Knopf... gibt es ne andere Möglichkeit n Bild einzufügen ?

Es gib ne Dokumentation :

http://www.file-upload.net/download-922019/Bild.html.html

Dort sind aber ,wie schon gesagt nur die methoden aufgelistet ... ohne große Erklärung was sie machen sondern einfach nur wie man sie anwendet ... alles ein wenig seltsam ... es gibt auch keine Beispiele für die Implemention ...

7

Wednesday, June 18th 2008, 7:26pm

Und du bist dir sicher, dass die Datei existiert?
was sagt

Java Quellcode

1
new java.io.File ("c:\\auto.jpg").exists ();

true oder false?

Ansonsten kopiere die Datei auto.jpg mal in das Verzeichnis wo die .class Dateien liegen.
Vielleicht akzeptiert die Klasse Bild keine absoluten Pfade???

8

Wednesday, June 18th 2008, 8:50pm

Wenn du WIndows Vista mit eingeschaltetem UAC hast, kann es auch sein, dass deine Anwendung nicht das recht hat da zu schreiben/lesen.

9

Wednesday, June 18th 2008, 9:52pm

Die Datei existiert 100%tig ...
Ich hab WIndow XP und die datei ist nicht schreibgeschützt...
Absolute Pfade ? gib den noch ne andere Möglichkeit ? ^^

10

Thursday, June 19th 2008, 5:41am

Naja, du musst irgendwo eine Datei car.java haben und an anderer Stelle eine Datei car.class.
Kopiere die Datei "auto.jpg" in das selbe Verzeichnis wo "car.class" liegt und ändere den Aufruf im Konstruktor auf "auto.jpg"

hth

Similar threads

Social bookmarks