Java - private static final long serialVersionUID

SparkMonkay

Commander
Registriert
Feb. 2013
Beiträge
2.337
Hallo Forum,

hatte wieder Lust mit Java zu arbeiten.

Nun habe ich mal ein das hier fabriziert
Code:
import java.awt.*;

public class GUI_Beispiel extends Frame {

	/* private static final long serialVersionUID = 7L; */

	GUI_Beispiel(String title){
		super(title);
		
		Button a11 = new Button ("a11");
		Button a12 = new Button ("a12");
		Button a13 = new Button ("a13");
		Button a21 = new Button ("a21");
		Button a22 = new Button ("a22");
		Button a23 = new Button ("a23");
		Button a31 = new Button ("a31");
		Button a32 = new Button ("a32");
		Button a33 = new Button ("a33");
		
		setLayout(new GridLayout(3,3));
		
		add(a11,1-1);
		add(a12,1-2);
		add(a13,1-3);
		add(a21,2-1);
		add(a22,2-2);
		add(a23,2-3);
		add(a31,3-1);
		add(a32,3-2);
		add(a33,3-3);
	}
	
public static void main(String[] args) {
	GUI_Beispiel fenster = new GUI_Beispiel("Rechner");
	
	
	fenster.pack();
	fenster.setVisible(true);
	
		}
	}

Was ich jetzt wissen will, ist warum Eclipse will das ich einen Serial-Key nutze....

Der will es nicht umsetzen, auch wenn ich was zufälliges nehme...

Was habe ich da zu ändern, damit es funktioniert?

MfG Bio
 
Wenn es dir um das "serialVersionUID" geht - Stichwort ist Serialisierung.

Gruß Zoldyck
 
Ja klar, das weiß ich, nur ich brauche es nicht, und der will es nicht ohne durchsetzten....

Ich will es wie im Buch umsetzen, denn davon war nirgends die Rede!

Ich habe das Grundgerüst übernommen und dann mein Teil draus gemacht, aber Eclipse will plötzlich was ganz anderes :/

//EDIT:

Code:
public class GUI_Beispiel extends Frame

da hat der
unterkringelt, nur ich verstehe nicht warum.
 
Wenn er das markiert (Gelb oder Rot?) wird auch sicher dabei stehen warum eClipse damit ein Problem hat... wenn es "Gelb" ist - weil du die UID weglässt dann ist das im Prinzip nicht schlimm - Geld ist nur eine Warnung.

Was für eine Fehlermeldung bekommst du den in der Konsole, wenn du es ausführst?
 


Das hier

und das in der Konsole:
Code:
Exception in thread "main" java.lang.IllegalArgumentException: illegal component position
	at java.awt.Container.addImpl(Unknown Source)
	at java.awt.Container.add(Unknown Source)
	at AWT_Programm.GUI_Beispiel.<init>(GUI_Beispiel.java:24)
	at AWT_Programm.GUI_Beispiel.main(GUI_Beispiel.java:34)
 
Das ist eine Warnung, kein Fehler. Dein Programm kompiliert und läuft trotzdem. Wenn dich die Meldung stört, dann kannst du @SuppressWarnings("serial") über deine Klasse schreiben. Dann solltest du aber auch sicher sein, dass du keine serialVersionUID brauchst.

edit: die Exception ist ein völlig anderer Schuh. Aber "Illegal component position" ist ja ziemlich aussagekräftig. Die Positionsangaben im GridLayout sind null-basiert (ähnlich wie Arrays), du musst mit 0-2 arbeiten statt mit 1-3.
 
Zuletzt bearbeitet:
Also mir scheint das du absolut keine Ahnung hast, was du da machst. Die Exception hat absolut nichts damit zu tun das GUI_Beispiel gelb unterstrichen ist - wie die Warnung auch sagt ist GUI_Beispiel nur Gelb unterstrichen (nur eine Warnung!) weil die keine UID definiert hast.

Die Exception sagt dir doch ganz offensichtlich, das du die Elemente (Buttons) nicht korrekt auf das Frame setzt... "illegal component position"
 
Bei den Buttons wurde nix markiert, weder rot noch gelb :/

Was soll ich den mit den Buttons machen?
 
Wie gesagt du hast wohl keine Ahnung was du da wirklich machst - rot sind Syntax Fehler - er kann dir wohl schlecht Fehler, die erst zur Laufzeit auftreten rot markieren - woher soll eClipse das wissen.

Nur als Beispiel - schreib die add Zeilen mal so:

add(a11);
add(a12);
add(a13);
add(a21);
add(a22);
add(a23);
add(a31);
add(a32);
add(a33);
 
ahhh, ok jetzt geht es, also kann ich es nicht so schreiben.

Gibt es eine Möglichkeit es so gestalten das ich den Elementen ihren Platz in der Matrix zuweise?

Danke sehr an euch!
 
KaptainBio schrieb:
Was soll ich den mit den Buttons machen?


Wie beschrieben sind die Angaben null-basiert, fang mit 0,0 an und nicht mit 1,1, das ganze endet dann entsprechend bei 2,2 und nicht 3,3.

edit: ...
 
Zuletzt bearbeitet:
Jepp, der macht was ich will!

Danke sehr, wollte nämlich was für meine nächste Klausur programmieren, damit ich die Matrizen/Matrix nicht mehr per Hand multiplizieren muss, kann ich es auch so machen, oder als Verschlüsselung von Botschaften kann man es auch nutzen.
 
KaptainBio schrieb:
hatte wieder Lust mit Java zu arbeiten.
Was heißt denn "wieder"? Du mach mir nicht den Eindruck, als hättest du schon mal programmiert. Das fängt schon damit an, dass du dich nicht selbst über serialVersionUID schlau machen oder eine Fehlermeldung interpretieren kannst.

Auch sehr interessant:
Code:
		add(a11,1-1);
Man könnte meinen, dass der Button an die Position (1,1) gesetzt werden sollte, tatsächlich ist das aber eine Subtraktion, bei der 0 herauskommt. Klar, dass einige Komponenten bei der Position "1-2" dann schon mal meckern.

Besonders schön fand ich aber, dass du den Screen abfotografiert hast :D
 
Darlis schrieb:
Was heißt denn "wieder"?
Mal habe ich HTML/CSS lieber als Java und mal das zocken und auch gerne mal mein Mathe/Bio Buch :P

Du mach mir nicht den Eindruck, als hättest du schon mal programmiert.
Gelegentlich was kleines wie ein Programm um mir eine Fibonachizahl mit 40 Stellen generieren zu lassen.
Auch sehr interessant:
Code:
		add(a11,1-1);
Man könnte meinen, dass der Button an die Position (1,1) gesetzt werden sollte, tatsächlich ist das aber eine Subtraktion, bei der 0 herauskommt. Klar, dass einige Komponenten bei der Position "1-2" dann schon mal meckern.
Besonders schön fand ich aber, dass du den Screen abfotografiert hast :D

Jepp ich auch, schönes Bild, wollte es zuerst mit "Snipping Tool" rausscheiden, jedoch wenn ich weggeklickt habe ist die Meldung verschwunden.

Spaß bei Seite, ich hatte keinen Plan was ich da tun musste und ich habe es mit Matrizen halt so verstanden und in der Formelsammlung stand es so, dass ich oben links halt a11 habe, was für mich a11,1-1 und nicht sonst was ergeben sollte. Denn bei mir ich Buch wurde es so gemacht, dass die
Code:
 add(Komponente1-1)
gemacht haben. Ich habe es so übernommen. Ich dachte es wäre richtig so, wenn es im Buch so steht(ok, wenn ich es ohne Komma mache wird es rot unterstrichen/unter-kringelt. Eine Wissenslücke die ich jetzt gefüllt habe.
 
Zuletzt bearbeitet:
KaptainBio schrieb:
wollte es zuerst mit "Snipping Tool" rausscheiden, jedoch wenn ich weggeklickt habe ist die Meldung verschwunden.
Neumodischer Schnickschnack! Ich nutze immer noch die gute alte "Druck"-Taste. Funktioniert immer.
 
carom schrieb:
Das ist eine Warnung, kein Fehler. Dein Programm kompiliert und läuft trotzdem. Wenn dich die Meldung stört, dann kannst du @SuppressWarnings("serial") über deine Klasse schreiben. Dann solltest du aber auch sicher sein, dass du keine serialVersionUID brauchst.

Man kann die Meldung auch in den Einstellungen abstellen. Unter Java->Compiler->Errors/Warnings->Potential programming problems->Serializable class without serialVersionUID.

Wenn man keine Serialisierung verwendet, wäre das durchaus angebracht. Ansonsten würde ich mir Cleanup entsprechend einrichten, um die serialVersionUID automatisch generieren zu lassen.
 
Zurück
Oben