Varför fungerar inte detta med Serializable?

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Dec 2006

Varför fungerar inte detta med Serializable?

Hej!

Jag har ett problem när jag vill rita ut sparade saker via Serializable i paint() om de innehåller if satser. Varför fungerar inte detta?

public void paint(Graphics g) { Graphics2D g2d = (Graphics2D) g; System.out.println("paint rectangle"); //Border ? if(getBorder()==true){ g2d.setColor(borderColor); if(borderType == "stroke"){ g2d.setStroke(new BasicStroke(borderSize)); } } g2d.fillRect(super.getX(), super.getY(), super.getWidth(), super.getHeight()); }

Som ni ser så har jag en if-sats i paint som den inte lyckas rita ut. Hur kommer detta sig? Medan fillRect klarar den av att rita ut som den ska. Den klarar alltså att rita ut själva rektangeln men den klarar inte av att rita ut bordern till den.
Jag kan inte förstå varför detta inte fungerar, någon som kan förklara eller kanske komma med något tips om vad som kan vara fel?

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Feb 2003

Returnerar inte getBorder() ett objekt av typen Border?
Kompilerar din kod?

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Dec 2006
Citat:

Ursprungligen inskrivet av Garret
Returnerar inte getBorder() ett objekt av typen Border?
Kompilerar din kod?

getBorder() returnerar en boolean.
Som tydligen är false efter att man har öppnat filen, hur kommer detta sig?
Den sätts till sann innan den sparas.
Ska jag inte kunna spara detta med Serializable?

public class Circle implements Serializable { private static final long serialVersionUID = 1L; private boolean border; ..... public boolean getBorder(){ return border; } public void setBorder(boolean border){ this.border = border; }

Varför är min getBorder() false när jag har öppnat filen igen? jag tycker att den borde behålla sitt value som true, eller har jag fel där?

Trädvy Permalänk
Medlem
Registrerad
Okt 2003
Citat:

Ursprungligen inskrivet av mojito
getBorder() returnerar en boolean.
Som tydligen är false efter att man har öppnat filen, hur kommer detta sig?
Den sätts till sann innan den sparas.
Ska jag inte kunna spara detta med Serializable?

public class Circle implements Serializable { private static final long serialVersionUID = 1L; private boolean border; ..... public boolean getBorder(){ return border; } public void setBorder(boolean border){ this.border = border; }

Varför är min getBorder() false när jag har öppnat filen igen? jag tycker att den borde behålla sitt value som true, eller har jag fel där?

Nej du har inte fel. Den variabeln borde definitivt ha kvar sitt värde efter att blivit deserialiserad igen.

Svårt att säga vad som är fel men låter ju rent spontant som att du antingen inte läser upp objektet igen eller serialiserar fel instans. Det finns då inget direkt fel i koden som du har bidragit med i inlägget.

//C