JComponent Größe

Alenka87

Mitglied
Hallo zusammen,

ich bin grad auf ein "Problemchen" gestoßen, das mich echt aus dem Konzept gebracht hat :bahnhof:

Man stelle sich vor: Eine kleine Software mit JGoodies für die GUI.

Die Oberflächen bauen also auf JComponent auf. Alles ganz net bis auf die Aufgabe: Die Fenster in ihrer Größe fixieren, net das der Anwender aus langweile anfängt, mit fenstergröße zu spielen. :D

Ich dachte erst ma, "Supi" - ist ja in einer Zeile mit setResizable(false) machbar, aber nix da ???:L So was funktioniert mit einem JComponent wohl nicht.

Dann bin ich einen langen Weg gegangen:Ein Fenster kriegt seine prefferedSize, dann Listener hinzufügen, der auf Größenverändeurngen reagiert und das Fenster zurück in die gewünsche Größe befördert.

Java:
@Override
	public void componentResized(ComponentEvent e) {
		if(view!=null){
			int actualHigh = (int) view.getPanel().getSize().getHeight();
			int actualWidth = (int) view.getPanel().getSize().getWidth();
			int preferredHigh = (int) view.getPanel().getPreferredSize().getHeight();
			int preferredWidth = (int) view.getPanel().getPreferredSize().getWidth();

			if(actualHigh != preferredHigh || actualWidth != preferredWidth){
view.getPanel().setSize(preferredWidth, preferredHigh);
				view.getPanel().validate();
				view.getPanel().repaint();
			}

		}
	}

Also: Listener reagiert. Dank dem Debbug habe ich auch gesehen, dass veränderte größe erkannt wird. Neue (preffered) Größe wird gesetzt. Aber es ist nicht zu sehen.

Java:
int high = 500;
int width = 400;

Dimension d = new Dimension(width, high);
component.setMinimumSize(d);
component.setMaximumSize(d);
component.setPreferredSize(d);
auch das wird ignoriert....

Hab da schon so ziemlich alles ausprobiert. Aber es will nicht.

Dann wurde mir auch noch gesagt, dass das mit dem Listener eine sehr schlehte Lösung ist. Ok... ist wohl nicht gut für die performance, wenn bei mehreren Dialogen immer Listener mitlaufen müssen.
Dennoch:

ich stehe vor dem "Problemchen" - warum solche Sachen wie minimale bzw. maximale Größe festlegen ignoriert werden und warum setSize nicht klappt. :autsch:

Und die eigentliche Frage: ist es möglich die Größe des Fensters zu fixieren??????:L

was mir grad spontan eingefallen ist: Gibt es vielleicht was JGoodies-spezifisches für so ein Fall?
DAnke im Vorraus!!!!
 

Volvagia

Top Contributor
Ich gebs zu, ich kenn die JGoodies nicht, aber setResizable sollte bei JComponent trotzdem funktionieren.

Java:
private static void showGui() {
	JFrame frame = new JFrame();
	frame.setSize(100, 100);
	frame.setContentPane(new JComponent() {});
	frame.setResizable(false);
	frame.setVisible(true);
}

Die Pref. Size hat nichts mit der Größe des Fensters zu tun. JFrames richten sich auch nur bei pack daran. Wenn es wirklich nicht funktioniert würde ich die Änderung direkt am Fenster (setSize) durchführen und nicht die Pref. Size des Childs setzen.

(Die Pref. Size sollte eigendlich garnicht gesetzt werden, das soll der LayoutManager für einen erledigen.)
 

Alenka87

Mitglied
setResizable() funktioniert beim JFrame und bei JDialog, aber nicht bei JComponent oder JPanel.

Bei uns wird nur das Hauptfenster auf JFrame aufgebaut, alle weiteren Dialoge (z.B. Eingabedialoge, Fehlermeldungen...) basieren auf JComponent/JPanel.
Ich verstehe selbst nicht so ganz, bin noch nicht ganz eingestiegen. Habe schon ganzes Workspace durchgesucht, ob ich nicht irgendwo dem JFrame die Größe fixieren kann. Aber das klappt nur im hauptfenster. Alle weiteren Dialogfenster können trotzdem noch in der Größe verändert werden :(
 

Michael...

Top Contributor
Aber JComponents oder JPanels kann man ja nicht direkt anzeigen. Die müssen dann ja irgendwo in einem JFrame, JDialog o.ä. stecken.
 

Alenka87

Mitglied
das weiss ich ja.... nur sitze ich erst seit einem Monat an einem Projekt, das schon seit über 2 Jahren läuft und hab noch nicht überall Überblick.

Vielleicht habt ihr einen Tip, wie ich nach entsprechenden Stellen suchen kann?
Abgeleitete Klassen und "References in Workspace" durchforsten hat mich nicht weiter gebracht.
 

Michael...

Top Contributor
Heißt Du findest die Window Objekte nicht? Grundsätzlich könnte man den Source Code auf Verdacht nach JFrame, JDialog... durchsuchen, oder sich über die Referenzen "hochhangeln".
Per Code bekommt man mittels
Code:
getTopLevelAncestor()
an der Komponente eine Referenz auf das Fensterobjekt, sofern die Komponente bereits in dem Objekt verbaut ist.
 

Alenka87

Mitglied
mit getTopLevelAncestor() :
Code:
Component comp = view.getPanel().getTopLevelAncestor() ;
sehe im beim Debugging: comp = null ???:L
 

Michael...

Top Contributor
Dann ist die Komponente (zu diesem Zeitpunkt noch) nicht in einem Fenster verbaut.
view ist eine eigene Klasse, die als Attribut das Panel enthält?
 

Alenka87

Mitglied
Die Abfrage nach dem Container mache ich an der Stelle, wo auch der Listener hinzugefügt wird:

Java:
view.getPanel().addComponentListener(this);
Container c = view.getPanel().getTopLevelAncestor();

Mit dem Listener funktioniert es ja, also muss die Komponente schon exsistieren. (der Listener funktioniert so weit, dass er erkennt, wenn die Größe des Fensters verändert wurde, sieh erster post)

Mir sit das alles rätzelhaft. Über Referenzen hochhangeln hat mich auch nirgendswochin geführt. Ich lande irgendwann bei den klassen, die ich nicht merh bearbeiten kann. aber auch da sehe ich überall nur JComponent und JPanel.

Und wenn ich versuche über References rauszufinden, wo JDialog und JFrame verwendet werden, krieg eich nur die Klassen, die von JGoodies abgeleitet sind und zu internen JARs gehören, die ich auch nicht editieren kann.

Kann so was sein? Kann es sein, dass ich echt so tief ins System greifen muss, um so ein lächerliches Problemchen zu lösen?

____
Ja,
Code:
View
ist eine klasse für sich, die das JComponent enthält. Auf JComponent werden alle Elemente platziert (Textfelder, Buttons...) und in dieser Klasse geschieht auch das DataBinding(--> JGoodies)
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Batik: Inhalt JComponent to SVG? AWT, Swing, JavaFX & SWT 6
Hatsi09 JComponent anklicken und "entklicken" AWT, Swing, JavaFX & SWT 7
L JComponent aus JPanel anhand Mausposition ermitteln AWT, Swing, JavaFX & SWT 10
S Swing Schwierigkeiten mit JComponent AWT, Swing, JavaFX & SWT 4
T Swing JComponent vergrößern AWT, Swing, JavaFX & SWT 4
L JComponent und MouseMotionListener AWT, Swing, JavaFX & SWT 2
M Mouse Click Event ohne ein JComponent Objekt AWT, Swing, JavaFX & SWT 3
L Eigene JComponent in GridLayout AWT, Swing, JavaFX & SWT 9
Z JComponent's requestFocus() - Wieso nicht immer anwendbar? AWT, Swing, JavaFX & SWT 1
Z Java-Swing : JComponent AWT, Swing, JavaFX & SWT 2
W JComponent - ComponentListener - resized / moved AWT, Swing, JavaFX & SWT 5
Developer_X Wie heißt das JComponent hier? AWT, Swing, JavaFX & SWT 2
A Swing Eigene JComponent Scrollable AWT, Swing, JavaFX & SWT 6
R JComponent auf Canvas AWT, Swing, JavaFX & SWT 8
A Abgeleitete JComponent wird nicht gezeichnet AWT, Swing, JavaFX & SWT 10
T jcomponent wird nicht angezeigt AWT, Swing, JavaFX & SWT 9
S Eigene JComponent Image zeichnen AWT, Swing, JavaFX & SWT 3
H Swing "Drag and Drop" eines JComponent über ein JPanel AWT, Swing, JavaFX & SWT 2
N 2D-Grafik RTF in eigener JComponent AWT, Swing, JavaFX & SWT 2
D Swing JComponent zeichnen ohne sie zur Oberfläche hinzuzufügen AWT, Swing, JavaFX & SWT 2
P JComponent / JLabel drehen (Rotation) AWT, Swing, JavaFX & SWT 2
D JComponent erweitern AWT, Swing, JavaFX & SWT 4
1 JComponent -> java.lang.NullPointerException AWT, Swing, JavaFX & SWT 13
M 2x JComponent in einem JFrame darstellen? AWT, Swing, JavaFX & SWT 7
StupidAttack Animation, JComponent AWT, Swing, JavaFX & SWT 3
P Swing Eigene Komponente Entwickeln - erben von JComponent oder JPanel? AWT, Swing, JavaFX & SWT 5
B Wechsel JTextArea und JComponent AWT, Swing, JavaFX & SWT 9
S Unterscheiden ob ein Graphics-Objekt von einer JComponent oder einem BufferedImage kommt..? AWT, Swing, JavaFX & SWT 4
H JComponent == JTextfield? AWT, Swing, JavaFX & SWT 4
C Ermitteln ob JComponent einen Listener besitzt AWT, Swing, JavaFX & SWT 2
T Eigene JComponent AWT, Swing, JavaFX & SWT 4
G JComponent nachträglich in JPanel einfügen AWT, Swing, JavaFX & SWT 5
M Ganzen Frame mit JComponent ausfüllen AWT, Swing, JavaFX & SWT 9
M JMenu teilweise unter einer JComponent AWT, Swing, JavaFX & SWT 4
I Swing JComponent als BufferedImage speichern AWT, Swing, JavaFX & SWT 18
1 Eigene JComponent mit MouseListener versehen AWT, Swing, JavaFX & SWT 10
T JComponent nur in Swing verwendbar? AWT, Swing, JavaFX & SWT 6
M Mehrere Icons in einer JComponent AWT, Swing, JavaFX & SWT 5
Dragonfire Image von JComponent AWT, Swing, JavaFX & SWT 2
T x und y herrausfinden eines JComponent auf JFrame AWT, Swing, JavaFX & SWT 14
J absolute Position einer JComponent ermitteln AWT, Swing, JavaFX & SWT 4
B "weiches" Bewegen von einem JComponent AWT, Swing, JavaFX & SWT 18
ARadauer JPanel vs JComponent AWT, Swing, JavaFX & SWT 2
I JDialog aus JComponent erstellen AWT, Swing, JavaFX & SWT 2
S JComponent u. JPanel ausdrucken AWT, Swing, JavaFX & SWT 3
J SWT JComponent Problem AWT, Swing, JavaFX & SWT 4
T JComponent überzeichnen? AWT, Swing, JavaFX & SWT 2
G JComponent in JTable AWT, Swing, JavaFX & SWT 8
M JComponent wird in JFrame nicht angezeigt AWT, Swing, JavaFX & SWT 4
D bei Thread in JComponent malen NullPointerException AWT, Swing, JavaFX & SWT 3
S Alle EventListener einer JComponent abfragen? AWT, Swing, JavaFX & SWT 3
S JComponent in JPanel darstellen AWT, Swing, JavaFX & SWT 2
N JComponent#getClientProperty(key) welche Schlüssel gibt es? AWT, Swing, JavaFX & SWT 3
E Drucken von JComponent. AWT, Swing, JavaFX & SWT 4
S JComponent ersetzen AWT, Swing, JavaFX & SWT 13
R Resize Problem bei JComponent AWT, Swing, JavaFX & SWT 2
M JButton in JComponent abfragen AWT, Swing, JavaFX & SWT 6
S Mausbehandlungen für JComponent AWT, Swing, JavaFX & SWT 7
M Verschiebbare JComponent AWT, Swing, JavaFX & SWT 5
C zeichnen auf jComponent AWT, Swing, JavaFX & SWT 3
S in einem JComponent zu zeichnen AWT, Swing, JavaFX & SWT 4
G Grafik auf JComponent ohne Überschreiben von Paint-Methoden AWT, Swing, JavaFX & SWT 4
R JComponent malt seine Kinder nicht AWT, Swing, JavaFX & SWT 8
G JComponent Hintergrund AWT, Swing, JavaFX & SWT 3
M JMenu auf JComponent? AWT, Swing, JavaFX & SWT 10
G Graphics (g) und JComponent prob. AWT, Swing, JavaFX & SWT 2
G Klasse XYComponent extends JComponent AWT, Swing, JavaFX & SWT 3
P JTextField wird nur sehr klein angezeigt und verändert die Größe nicht AWT, Swing, JavaFX & SWT 3
H JDialog in Größe ändern - Resize-Cursor bleibt betreten der Komponente AWT, Swing, JavaFX & SWT 1
H AWT Dialog Größe ändern - Schwarzer Inhalt beim groß ziehen AWT, Swing, JavaFX & SWT 1
Yonnig JavaFX Größe von WebView an Content anpassen AWT, Swing, JavaFX & SWT 3
J Swing Komponente wird unpassend angepasst in der Größe AWT, Swing, JavaFX & SWT 35
FrittenFritze Ein Problem mit der CSSBox, die Größe wird nicht angepasst AWT, Swing, JavaFX & SWT 5
D JavaFX Größe des Bild an ImageView anpassen AWT, Swing, JavaFX & SWT 3
B Dynamische ListView-Größe, die bei Fenstergrößenänderung sich anpasst AWT, Swing, JavaFX & SWT 19
R Swing JTextField - Schriftgröße je nach Länge und Größe ändern AWT, Swing, JavaFX & SWT 0
B veränderte Größe eines Panels im Vorhinein wissen? AWT, Swing, JavaFX & SWT 1
B Größe der Parent-Component dynamisch an children anpassen AWT, Swing, JavaFX & SWT 30
L JavaFX AnchorPane an die Größe der Scene oder Window binden? AWT, Swing, JavaFX & SWT 3
K JavaFX Component Größe an Inhalt anpassen AWT, Swing, JavaFX & SWT 11
S Java GUI durch variable Größe einer Map anpassen AWT, Swing, JavaFX & SWT 3
R Größe von Scene und stage an grid anpassen AWT, Swing, JavaFX & SWT 4
M Java FX größe der shapes anpassen AWT, Swing, JavaFX & SWT 0
L Swing JPanel Größe anpassen AWT, Swing, JavaFX & SWT 6
E Wie kann ich ein JLabel auf größe der schriftlänge setzten? AWT, Swing, JavaFX & SWT 2
C Swing JFrame ändert Größe AWT, Swing, JavaFX & SWT 0
G Swing JButton ändert (unerwünscht) Größe bei Ausführung AWT, Swing, JavaFX & SWT 4
L Swing Größe automatisch anpassen AWT, Swing, JavaFX & SWT 14
B AWT Panel größe im BorderLayout einstellen AWT, Swing, JavaFX & SWT 1
J Swing Pane im SplitPane automatische Größe aktivieren AWT, Swing, JavaFX & SWT 0
DaCrazyJavaExpert Swing Größe des JPanel ändern/wird nicht geändert. AWT, Swing, JavaFX & SWT 3
M Swing Mehrere Textfelder mit ScrollBars - Größe der Felder AWT, Swing, JavaFX & SWT 0
L JavaFX ListView Größe anpassen AWT, Swing, JavaFX & SWT 1
Neumi5694 Größe von Komboboxen neu berechnen AWT, Swing, JavaFX & SWT 3
L JavaFX List oder TableView Größe dynamisch anpassen? AWT, Swing, JavaFX & SWT 4
P Größe und Ausrichtung von Komponenten festlegen AWT, Swing, JavaFX & SWT 13
I CSS - backgroundImage - Größe automatisch an den Container anpassen AWT, Swing, JavaFX & SWT 1
C Größe des Mauszeigers ermitteln AWT, Swing, JavaFX & SWT 5
MaxG. JFrame Größe ändern AWT, Swing, JavaFX & SWT 16
P Jframe Bild einfügen, Hintergrund Farbe ändern, und Button schrift Größe ändern AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben