Swing erzeugt Exception in NetBeans

das Einzige, was schlimmer als GUI-Builder sind, ist das null-Layout
Das lasse ich jetzt einfach mal so stehen.
Ich denke auch hierbei kommt es auch auf den Anwendungsfall an.

Ich will den Code ändern, damit er zumindest eine halbwegs saubere Struktur hat.
Wenn du der Meinung bist, der generierte Code sei absolut nicht zu gebrauchen, dann solltest du es lieber selber machen.

Ich hatte bisher noch keinerlei Probleme mit dem generierten Code dieses GUI Editors.
Meistens erstelle ich sowieso nur einzelne, nicht sehr komplexe Panels und füge diese irgendwann später *manuell* zusammen.
 
wenn du NULL-Layout verwendest anstatt *FreeDesign* dann sieht der generierte Code auch nicht mehr so *strubbelig* aus.

das Einzige, was schlimmer als GUI-Builder sind, ist das null-Layout

Ich wollte nur versuchen zu erklären warum der generierte Code so aussieht, wie er aussieht.
Je komplexer das Layout, desto komplexer der dazugehörige Code.
Ist doch klar, oder?
 
Die einzige, sinnvolle Verwendung des null-Layouts ist, wenn du ein Programm genau für einen einzigen PC schreibst.
 
Ein Null-Layout positioniert die Elemente absolut. Verwendet ein anderes System eine andere Standardschrift, ein anderes Standard-LaF, eine andere Standard-Schriftgröße, ... ja sogar die Darstellung bspw. unter XP von "klassisch" und "neu" reichen schon aus, ist es nicht mehr sicher, dass sich die Komponenten nicht überschneiden, richtig darsgestellt werden (außerhalb des darstellbaren Bereichs des Fensters), schön aussehen, ...

Einzige ausnahme wäre, wenn man zusätzlich zur Verwendung eines null-Layouts noch die Größen und Positionen dynamsich berechnet - aber dann kann man auch gleich einen normalen Layout-Manager verwenden.
 
Ein Null-Layout positioniert die Elemente absolut. Verwendet ein anderes System eine andere Standardschrift, ein anderes Standard-LaF, eine andere Standard-Schriftgröße, ..

OK, das sehe ich ein.
Allerdings habe ich genau in diesem Bereich noch keine echten Erfahrungen machen können. (werde gleich mal einen Test starten :rolleyes:)

Ich selber und auch bisher alle unsere Kunden hatten bisher immer die Standard-Einstellung (zumindest von der Schrifgröße).
Die meisten unserer Kunden haben entweder kein Recht gewisse Änderungen vorzunehmen oder wissen einfach nicht wie (und das! ) es geht.

Ein alter Arbeitskollege von mir musste prinzipiell immer alle Standard-Einstellungen ändern. Dadurch sahen aber die meisten seiner geöffneten Programm nicht mehr ganz so toll aus.

Ich werde das aber mal im Auge behalten.
 
Ich hab das jetzt mal getestet.
Also Systemsteuerung -> Anzeige -> Darstellung ->
- Klassisch
- Kontrast #1 (schwarz)
- Schriftgröße Extragroß
(Dann habe ich noch nen paar Sachen unter den Erweiterten-
Einstellungen geändert, vor allem in den Schriftgrößen)

Meine JavaApplication war von diesen Einstellungen allerdings ziemlich unbeeindruckt.
Bis auf die Farben hat sich eigentlich nix geändert.
Mein NullLayout-Test-Panel sah komplett unverändert aus.
Alle Controls waren dort, wo ich sie plaziert hatte.
...Und die MessageBoxen waren viel größer...

Was genau müsste ich denn ändern, so das sich die Controls überlappen könnten?
 
Ein Beispiel unter XP: Standardeinstellungen: Schriftgröße: Normal, Style: klassisch.

Code:
package de.test;

import javax.swing.JFrame;
import javax.swing.JLabel;

public class JFrameTest {

	public static void main(String[] args) {
		
		JFrame frame = new JFrame();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setLayout(null);
		JLabel label = new JLabel("Test blub");
		label.setBounds(0, 0, 100, 15);
		JLabel label2 = new JLabel("Test2 blub");
		label2.setBounds(0, 15, 100, 15);
		frame.add(label);
		frame.add(label2);
		frame.setSize(50, 60);
		frame.setVisible(true);
	}
}

sieht bei mir wunderbar aus. Ändere ich jetzt aber das Design von klassisch auf neu, ist das letzte Textfeld (aufgrund der größeren Titelleiste) abgeschnitten. Selbiges ist zu beobachten, wenn ich nur die Schriftgröße auf z. B. "Extragroß" einstelle.

Wenn ich schon mit ein paar Systemeinstellungen innerhalb eines einzigen Betriebssystems eine derart einfache Anwendung "zerschiesen" (ich weiß, es ist nicht viel falsch, aber es ist etwas falsch) kann, dann will ich mir die Auswirkungen einer weitaus komplexeren Anwendung mit einem Null-Layout auf unterschiedlichen Systemen (Linux, Mac, Solaris, Windows-System (sogar untereinander), ...) gar nicht vorstellen.

Ich bekomme auch ein ähnliches Ergebnis, wenn ich das LookAndFeel im Nachhinein verändere.
 
Zuletzt bearbeitet von einem Moderator:
Also ich habe gerade genau dein Beispiel getestet.
Das was du schreibst kann ich absolut nicht nachvollziehen.
Bis auf das LookAndFeel habe ich die gleichen Änderungen durchgeführt die du beschrieben hast.
Kann ich einfach nicht nachvollziehen.
Habe mehrere Tests gemacht.

Ich nutze:
XP SP3, JAVA 1.6.10

Ändere ich jetzt aber das Design von klassisch auf neu, ist das letzte Textfeld (aufgrund der größeren Titelleiste) abgeschnitten.
In deinem Code sehe ich aber auch kein Textfeld.
Evtl siehst du es deswegen nicht auf dem Panel?

Wenn ich schon mit ein paar Systemeinstellungen innerhalb eines einzigen Betriebssystems eine derart einfache Anwendung "zerschiesen" (ich weiß, es ist nicht viel falsch, aber es ist etwas falsch) kann, dann will ich mir die Auswirkungen einer weitaus komplexeren Anwendung mit einem Null-Layout auf unterschiedlichen Systemen (Linux, Mac, Solaris, Windows-System (sogar untereinander), ...) gar nicht vorstellen.
Oh man....
erst meinst du *Zerschießen*!,
dann willst du dir *andere Auswirkungen gar nicht erst vorstellen*.
Das ist auf jedenfall Paranoia.
Möglichweise wird dadurch sogar das gesamte Netzwerk lahmgelegt und die Anwendung entwickelt ein Bewusstsein und will die Weltherrschaft an sich reißen....

Und *FALSCH* ist eigentlich überhaubt gar nichts.
Weil: eine absolute Position ist eine absolute Position!
An den X + Y Koordinaten ändert sich überhaubt nichts.
 
Zurück