Ich will erreichen, dass ein Fenster in einer Anwendung immer nur so vergrößert werden darf, dass die Proportionen erhalten bleiben. Kann ich da mit einem Listener arbeiten, der auf eine Veränderung der Fenstergröße reagiert?
Ich kann zwar kaum Java, aber ich denk die Funktionalität lässt sich übertragen. Ich hab das hier mal als VB.Net Code:
Deklaration der variablen:
Dim OldWidth As Double = 600 Dim NewWidth As Double Dim OldHeight As Double = 300 Dim NewHeight As Double
Event BEVOR das Resize beginnt:
Private Sub Form1_ResizeBegin(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.ResizeBegin OldWidth = Me.Width OldHeight = Me.Height End Sub
Hier Is das SizeChanged oder Resize event drann, geht aber auch mit ResizeEnd(Win95 Style ^^)
Private Sub Form1_SizeChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.SizeChanged NewWidth = Me.Width NewHeight = Me.Height
If NewHeight <> OldHeight Then NewWidth = (NewHeight * OldWidth) / OldHeight Me.Width = CInt(NewWidth) End If If NewWidth <> OldWidth Then NewHeight = (NewWidth * OldHeight) / OldWidth Me.Height = CInt(NewHeight) End If End Sub
Funktioniert aber auch nur solange, wie die Maximale und Minimale Fenstergröße die selben Proportionen haben.