1 Möglichkeit: eine public ( oder wenn die Klassen im selben ordner sind kann sie auch protected sein ) Methode erstellen. z.B.:
Code:
public class QuadratBerechnung
{
public QuadratBerechnung ()
{
//Konstruktor
}
public int berechneQuadrat ( int zahl1, int zahl2 )
{
return Math.pow ( zahl1, zahl2 );
}
}
danach eine Instanz der Klasse erzeugen.
Code:
QuadratBerechnung quadratBerechnung = new QuadratBerechnung ();
//Hier ist jetzt der Aufruf
int ergebnis = quadratBerechnung.berechneQuadrat ( 5,5);
zweite Möglichkeit wäre eine statische Methode einer Klasse aufzurufen
Die Methode könnte in der selben Klasse so lauten:
Code:
public static int quadratBerechnen ( int zahl1, int zahl2 )
{
return Math.pow ( zahl1, zahl2 );
}
die könntest dann aus der Klasse aus aufrufen
Code:
int ergebnis = QuadratBerechnung.quadratBerechnen ( 4,6 );
thx leider spinnt mein java weil es sagt das er das symbol nicht kennt komischerweise auch bei einem prog wo ich schon eine externe datei drin hab(hab die nur nie verstanden) laufen tut die nur kopilieren kann ich die nicht
der rechner will wohl umbedingt sterben :twisted:
Öhm, moment mal, das Programm läuft, aber du kannst es nicht kompilieren.
Ist das den nicht irgendwie logisch? Eine *.java Datei wird in eine *.class Datei kompiliert, und die *.class Datei(en) werden dann als Programm benutzt (von der VM interpretiert).
Ich geb dir mal ein kleines Beispiel, wie man das machen kann:
Im Ordner compile\src habe ich die beiden Dateien "Main.java" und "Call.java", mit den Inhalten:
Main.java
Code:
public class Main {
public static void main( String[] args ){
Call call = new Call();
call.print();
}
}
Call.java
Code:
public class Call{
public Call(){
}
public void print(){
System.out.println( "hallo du da");
}
}
So, und nun kompilieren und laufenlassen
// Inhalt des Ordners src:
E:\Dateien\Java\Projekte04\compile>dir src
Datenträger in Laufwerk E: ist DATEIEN
Volumeseriennummer: 2034-18FB
Verzeichnis von E:\Dateien\Java\Projekte04\compile\src
// Kompilieren, der Ordner bin muss zuerst von Hand hergestellt werden!
E:\Dateien\Java\Projekte04\compile>c:\j2sdk1.4.2_01\bin\javac -d bin src\*.java
// Inhalt des Ordners bin
E:\Dateien\Java\Projekte04\compile>dir bin
Datenträger in Laufwerk E: ist DATEIEN
Volumeseriennummer: 2034-18FB
Verzeichnis von E:\Dateien\Java\Projekte04\compile\bin
das liegt daran ich hatte das schon vor einigen monaten gemacht das war noch mein erstes grafisches prog
ich glaube aber das liegt an meinem rechner der spinnt bischen rum ich hatte vor einer weile schon ein ähnliches prob als ich habe einen ordern da haben ich mein java prog was ich mache drin als ich ein zweites gemacht hab wollte ich die in unterverzeichnisse machen schon ging es nichtmehr da hatte er immer gesagt das da irgendwelche methoden spinnen komischerweise gings in eclipse na änderung der ordner gings wieder
das liegt daran ich hatte das schon vor einigen monaten gemacht das war noch mein erstes grafisches prog
ich glaube aber das liegt an meinem rechner der spinnt bischen rum ich hatte vor einer weile schon ein ähnliches prob als ich habe einen ordern da haben ich mein java prog was ich mache drin als ich ein zweites gemacht hab wollte ich die in unterverzeichnisse machen schon ging es nichtmehr da hatte er immer gesagt das da irgendwelche methoden spinnen komischerweise gings in eclipse na änderung der ordner gings wieder
Hm, ich frag mich eher wie man ein graphische Prog in einer Datei machen kann.., :wink: (zumal die Taschenrechner auf der EagleEyes Homepage doch schon einiges an Code haben müssen)
Wenn EagleEye es auf mehrere Dateien ausgeweitet hätte, würde er die Lösung des Problemes ja schon kennen...
leider stehe ich gerade wieder vor einem problem
ich habe jetzt mehere dateien geschrieben die gingen auch alle wunderbar nur jetzt will ich aus dem hauptprog aus die farbe der anderen fenster die ich aufgerufen habe ändern
hier mit ruf ich sie auf
public static void colorset(Color textfarbe,Color hintergrundfarbe)
{
//hier werden die farben geändert
}
nur da sagt er mir das
.\about.java:52: non-static variable aboutlabel00 cannot be referenced from a static context
nur ich will die nicht statisch machen weil wenn ich mich richtig erinnere kann man sie dann ja nichtmehr ändern
irre ich mich da vieleicht oder hat da wer ne andere lösung?
wäre euch sehr dankbar
static: Was mit static markiert ist existiert nur einmal, und unabhängig von einem Object (so ungefähr) final: Was mit final markiert ist, lässt sich nicht mehr verändern. Das gibt Konstanten, Klassen die sich nicht ableiten lassen, Methode die nicht überschrieben werden können.
Versuchs mal mit:
Code:
public void colorset(Color textfarbe,Color hintergrundfarbe){
//hier werden die farben geändert
}
hab ich auch schon versucht gehabtda kommt dann immer das
tabelle.java:83: non-static method colorset(java.awt.Color,java.awt.Color) cannot be referenced from a static context
einstellungen.colorset(textfarbe,hintergrundfarbe);
hab ich auch schon versucht gehabtda kommt dann immer das
tabelle.java:83: non-static method colorset(java.awt.Color,java.awt.Color) cannot be referenced from a static context
einstellungen.colorset(textfarbe,hintergrundfarbe);
du darfst dann nicht auf die klasse selbst zugreifen (denn dazu müsste die methode static sein), sondern musst dir ein objekt anlegen, auf dem rufst du dann die methode auf.
Da widerspreche ich mal ganz dreist. Jedenfalls bei mir funktioniert protected auch bei Klassen im selben package, die eine Klasse muss nicht erbende Klasse der anderen sein !!
Da widerspreche ich mal ganz dreist. Jedenfalls bei mir funktioniert protected auch bei Klassen im selben package, die eine Klasse muss nicht erbende Klasse der anderen sein !!
// Kompilieren, der Ordner bin muss zuerst von Hand hergestellt werden!
E:\Dateien\Java\Projekte04\compile>c:\j2sdk1.4.2_01\bin\javac -d bin src\*.java
// Inhalt des Ordners bin
E:\Dateien\Java\Projekte04\compile>dir bin
Datenträger in Laufwerk E: ist DATEIEN
Volumeseriennummer: 2034-18FB
Verzeichnis von E:\Dateien\Java\Projekte04\compile\bin
Wenn ich das so mache, bekomme ich beim ausführen Folgende Fehlermeldung:
(Im Ordner "C:\Java\test" liegen die beiden Dateien).
Ausschnitt aus der Eingabeaufforderung von Win
---------------------------------------------------------------------------------------
C:\Java>javac test\*.java
C:\Java>
C:\Java\test>java Main
Exception in thread "main" java.lang.NoClassDefFoundError: Main
----------------------------------------------------------------------------------------
In die Api hab ich schon geschaut, aber was da steht, sagt der Fehlertext ja schon aus. Was mach ich denn falsch?
Hast Du deiner Main-Klasse noch ein Package zugewiesen?
Etwas wie hier?
Code:
package test;
public class Main {
public static void main( String[] args ){
...
}
}
Wenn ja: starte mit c:\Java> java test.Main (denn Pfad zur Datei und Package-Angabe müssen übereinstimmen) Wenn nein: Poste doch Klassentext, und die ganzen Aufrufe die du in der Konsole machst. (Damit man's ausprobieren kann).
Ok, Entwarnung!
Es lag daran, dass unter Win2000 bei mir der ClassPath den namen PATH trug. Da hatte ich auch den Pfad zur java.exe eingetragen.
Nun hatte aber ein anderes Programm (ohne mein Wissen) ebenfalls eine Umgebungsvariable mit dem Namen "CLASSPATH" angelegt. Nachdem ich diese Umgebungsvariable gelöscht hab, geht alles wieder.
hmm irgendwas geht bei mir immer noch nicht er meckert rum das er jetzt einstellungen nicht kennt
aber ich lasse das erstmal sein und mache ein anders prog fertig das ich wegen prüfungen zurückgestellt hatte und kümmere mich um das problem später nochmal
danke für eure hilfe soweit 8)