GUI - resize frame

unknown

Bekanntes Mitglied
Hallo

Ich hab' eine Frage. Und zwar bei so einer Situation:

[Java]
JPanel myPanel = new JPanel(new GridLayout2, 1));
JLabel myTextLabel = new JLabel("My text");
JLabel myPicLabel = new JLabel(new ImageIcon("Bild.gif"));
myPanel.add(myTextLabel);
myPanel.add(myPicLabel);
pack();
[/Java]

Angenommen man kann die Textgrösse von "myTextLabel" ändern.
irgendeinmal hat der Text aber nicht mehr genügend Platz (wenn man ihn vergrössert) und deshalb kann man ein Teil davon nicht mehr sehen. Ich möchte allerdings, dass sich die Fenstergrösse (Frame Size) Analog der Textgrösse anpasst.

Sprich, wenn ich die Scriftgrösse 100 habe, möchte ich, dass das Frame automatisch eine Resize-Funktion vornimmt, so dass der Text immer noch genügend Platz hat und ganz sichtbar ist.

hätte da jemand eine Lösung?:)
 
Zuletzt bearbeitet:

Voltaire81

Mitglied
Naja, immer langsam, erstmal müsste das Label angepasst werden, dann der Frame etc. pp.

Wenn ich das nun ad hoc bräuchte würde ich wohl so anfangen.
Ich habe einfach mal als auslösendes Ereignis nen KeyListener verwendet.
Hilft vielleicht zum Start...

Java:
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;


public class FrmTest extends JFrame {
    private JTextField txf = new JTextField();
    private JLabel lbl = new JLabel();

    public FrmTest() {
        jbInit();
        
    }

    private void jbInit() {
        this.getContentPane().setLayout( null );
        this.setSize( new Dimension(400, 300) );
        txf.setBounds(new Rectangle(50, 35, 195, 25));
        lbl.setBounds(new Rectangle(50, 85, 195, 25));
        lbl.setBorder(BorderFactory.createBevelBorder(1));
        this.getContentPane().add(lbl, null);
        this.getContentPane().add(txf, null);
        
        txf.addKeyListener(new KeyAdapter(){
                public void keyReleased(KeyEvent e) {
                    String text = txf.getText();
                    int laenge = lbl.getFontMetrics(lbl.getFont()).stringWidth(text);
                    lbl.setBounds(lbl.getX(), lbl.getY(), laenge+5, lbl.getHeight());
                    lbl.setText(text);
                }
            });
    }
    
    public static void main(String[] args) {
        FrmTest frmT = new FrmTest();
        frmT.setVisible(true);
    }

}
 

unknown

Bekanntes Mitglied
danke für die Antwort
Allerdings wird bei meinem Fall die Labelgrösse schon angepasst. Das problem ist das Frame:)

Im Moment geraten die Labels ineinander, sobald es nicht genügend gibt.
 

KrokoDiehl

Top Contributor
Nun im einfachen Fall musst du gar nicht viel tun, außer nach einer Größenänderung erneut
Code:
pack()
aufzurufen. Dafür muss man natürlich entsprechende LayoutManager verwenden.
 

irgendjemand

Top Contributor
wie bereits erwähnt : im einfachsten fall einfach noch mal pack() callen ...

NULL layout ist hier definitiv die falsche wahl ... die meisten gängigen layouts *border-, flow-, gridbag- layout* sollten das schaffen

ich denke das größte problem ist eher der fakt das das frame bereits angezeigt wird ...

ziemlich schmutziger würg-a-raund *bewusst so geschrieben*

Java:
JFrame.setVisible(false);
JFrame.pack();
JFrame.setVisible(true);

alternativ könnte man noch nach pack() sowas wie (re)validate() , update() , repaint() ... oder diese ganzen methoden callen ... hab da jetzt aber leider kein beispiel bei dem die framgröße angepasst wird ...
 

unknown

Bekanntes Mitglied
ich komme später wieder zu diesem Problem zurück.

Momentan ist eine neue Frage aufgetaucht:

Weiss jemand, wie man in einem JToolbar extra sagen kann, dass ein Component rechs eingefügt werden soll?

[Java]bar.add(new JButton(), BorderLayout.EAST); [/Java]
und
[Java]bar.add(new JButton(), SwingConstants.RIGHT); [/Java]

funktionieren nicht...
 

irgendjemand

Top Contributor
@TO
jo klar ... spring ruhig von einem zum anderen thema ... is ja egal das beides nichts mit ein ander zu tun hat aber beides in ein thread ... obwohl das 1te problem noch nicht mal gelöst ist schon gleich das nächste klären wollen ...

sehr schlechter arbeits-stil ...
 

unknown

Bekanntes Mitglied
Ein noch schlechterer Still wäre für jede Frage extra einen Thread zu erstellen. Das Problem bezieht sich ja auch auf GUI.

Ich bin an solchen Diskussionen wirklich nicht interessiert. Bitte sachlich bleiben!
 

unknown

Bekanntes Mitglied
nicht alle auf einmal Leute... :)

Also Resize anhand von "pack()" funktioniert definitiv nicht. hätte jemand eine andere Lösung?
 
Zuletzt bearbeitet:
V

vanny

Gast
Also Resize anhand von "pack()" funktioniert definitiv nicht. hätte jemand eine andere Lösung?

wie wäre es mit resize durch pack(); :autsch:

Java:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

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

public class ResizeDurchLabel {
	
	private JFrame frame;
	private JLabel label;
	private JButton button;
	private String inhalt = "Text";

	public ResizeDurchLabel() {
		
		frame = new JFrame("TestFrame");
		label = new JLabel(inhalt);
		button = new JButton("mehr");
			button.addActionListener(new ActionListener() {
				
				@Override
				public void actionPerformed(ActionEvent arg0) {
				verlaengern();	
				}
			});
		
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.add(label);
		frame.add(button, BorderLayout.SOUTH);
		
		frame.pack();
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);
		
	}
	
	private void verlaengern(){
		inhalt += " und noch mehr Text";
		label.setText(inhalt);
		frame.pack();
	}

	public static void main(String[] args) {
		new ResizeDurchLabel();
	}

}
 

irgendjemand

Top Contributor
Ein noch schlechterer Still wäre für jede Frage extra einen Thread zu erstellen. Das Problem bezieht sich ja auch auf GUI.

Ich bin an solchen Diskussionen wirklich nicht interessiert. Bitte sachlich bleiben!

mag zwar sein das sich beides auf ein und die selbe GUI bezieht ... und das es vielleicht sinnvoll wäre wegen einer vermutlich bereits beantworteten frage kein neuen thread auf zu machen ...

aber hat dir noch niemand gesagt "eins nach dem anderen" ? 2 baustellen gleichzeitig führt nur zu noch größerer verwirrung ... also sollte man erstmal eins fertig machen bevor man sich ans nächste wagt ...

war ja auch nur so n tipp ... nicht das du irgendwann 100 probleme gleichzeitig in einen thread stopfen willst nur weil sich alle auf die selbe klasse beziehen ...


btw : da wir ja unten einen code haben bei dem durch pack() sehr wohl ein resize möglich ist *und das ohne weitere calls* würde mich mal der code interessieren mit dem du es versucht hast ...

ohne es zu wissen würde ich nämlich auf null-layout und setBounds() tippen
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Y resize von images Java Basics - Anfänger-Themen 1
F JFrame resize verschiebt JPanel Java Basics - Anfänger-Themen 3
I Resize Image - Einlesen von InputStream Java Basics - Anfänger-Themen 3
S Inhalt von JPanel erst nach Resize sichtbar Java Basics - Anfänger-Themen 2
A Resize-Fehler (nur) beim waagrecht Verkleinern Java Basics - Anfänger-Themen 5
S Java 2d resize unterdrücken! Java Basics - Anfänger-Themen 9
S JDialog resize zur Laufzeit PROBLEM!!! Java Basics - Anfänger-Themen 5
D Window resize Event ? Java Basics - Anfänger-Themen 5
J .resize . getScreenSize() ); - Taskleiste Java Basics - Anfänger-Themen 4
Alex_99 Aktion ausführen wenn Frame disposed wurde Java Basics - Anfänger-Themen 5
frager2345 Fensterklasse, Wie auf Frame im Listender zugreifen (ItemEvents) Java Basics - Anfänger-Themen 7
S GUI Frame wechseln Java Basics - Anfänger-Themen 15
C Exportierte JAR öffnet zweiten Frame nicht mehr Java Basics - Anfänger-Themen 7
C Erkennen ob Frame geschlossen wurde Java Basics - Anfänger-Themen 2
C Erste Schritte Spieler an anderen Frame weitergeben Java Basics - Anfänger-Themen 23
G Probleme bei Frame aufgaben Java Basics - Anfänger-Themen 6
CptK Interface Klasse Frame (extends JFrame) aus anderer Klasse schließen Java Basics - Anfänger-Themen 7
S Interface (WindowBuilder) Panels in einen Frame einfügen Java Basics - Anfänger-Themen 10
S Nach dem Herüberschieben eines Arrays zwischen 2 Frames öffnet sich das Frame nicht mehr Java Basics - Anfänger-Themen 12
S in ActionListener auf Eingabe aus anderem Frame warten Java Basics - Anfänger-Themen 2
D Interface Frame doppelt durch Aufruf der GUI Klasse Java Basics - Anfänger-Themen 1
M Erste Schritte Neuen Frame nur einmal offen haben Java Basics - Anfänger-Themen 6
schoenosrockos JButton füllt immer das ganze frame Java Basics - Anfänger-Themen 1
R Erste Schritte Frame mit Ladebalken und BestätigungsButton Java Basics - Anfänger-Themen 10
das_leon Interface Frame in einem Frame (Window Builder) Java Basics - Anfänger-Themen 2
Anfänger2011 Frame zeigt nicht gewünschtes Ergebnis an ... Java Basics - Anfänger-Themen 5
Z Object Kreis am Frame abprallen lassen! Java Basics - Anfänger-Themen 12
D Bild in Frame einfügen Java Basics - Anfänger-Themen 11
I Methoden Schwierikeiten mit Protokollfenster (Frame Objekt) Java Basics - Anfänger-Themen 4
A mehrere Panels in eigenen Klasssen in einem Frame Java Basics - Anfänger-Themen 16
J Extra Fenster (Frame) Java Basics - Anfänger-Themen 20
W Frame in anderer Klasse anzeigen lassen Java Basics - Anfänger-Themen 1
E Von Instanz des Dialogs auf das Frame zugreifen Java Basics - Anfänger-Themen 8
E 2. JFrame erkennt 1. Frame Java Basics - Anfänger-Themen 6
C Bild ins Frame laden und Objekte drüber legen Java Basics - Anfänger-Themen 1
R File chooser Dateien in frame anzeigen lassen Java Basics - Anfänger-Themen 5
L bestimmten Frame anzeigen lassen? Java Basics - Anfänger-Themen 6
H Textfeldinhalt löschen nachdem Frame geschlossen wird Java Basics - Anfänger-Themen 8
L Kalender Java Frame Java Basics - Anfänger-Themen 7
A Frame Java Basics - Anfänger-Themen 3
P Verwirrung mit AWT Frame und main Methode Java Basics - Anfänger-Themen 19
A Frame java Java Basics - Anfänger-Themen 3
D Frame schließt gleich alle Frames Java Basics - Anfänger-Themen 5
T udp -> bytearray -> image -> ausgabe via frame Java Basics - Anfänger-Themen 6
J Erste Schritte Speichern / Speichern unter / title Frame Java Basics - Anfänger-Themen 5
F Frame in Frame Java Basics - Anfänger-Themen 3
J Open reading Frame Java Basics - Anfänger-Themen 4
J Erstelltes Frame wird nicht angezeigt Java Basics - Anfänger-Themen 2
K Frame öffnen klappt nicht?! Java Basics - Anfänger-Themen 36
JAVAnnik Anwendung nach Schließen vom letzen Frame Java Basics - Anfänger-Themen 9
B Referenz zu anderen Frame Java Basics - Anfänger-Themen 10
A Frame Background Java Basics - Anfänger-Themen 21
S Klassen Klassenname = Frame? Java Basics - Anfänger-Themen 11
R Eingefärbtes Panel wird in Frame nicht angezeigt Java Basics - Anfänger-Themen 10
I Java - Text in neuem Frame wird nicht angezeigt Java Basics - Anfänger-Themen 4
M Frame mit mehreren areas Java Basics - Anfänger-Themen 14
B Frame über Button öffnen Java Basics - Anfänger-Themen 8
R Button soll neuen Frame öffnen Java Basics - Anfänger-Themen 21
L Variablen Frame Variablen-Schleife Java Basics - Anfänger-Themen 3
D Neues Frame öffnen Java Basics - Anfänger-Themen 7
V Frame bleibt grau Java Basics - Anfänger-Themen 5
G Polygon in Frame zeichnen Java Basics - Anfänger-Themen 3
F frame wird nicht angezeigt? Java Basics - Anfänger-Themen 10
S 2 Panels in einen Frame Java Basics - Anfänger-Themen 5
H Panels in Frame einbinden Java Basics - Anfänger-Themen 3
E Frame neu Zeichnen Java Basics - Anfänger-Themen 3
A Bild wird auf Frame nicht angezeigt! Keine Fehlermeldung Java Basics - Anfänger-Themen 3
O Grafik in Frame laden Java Basics - Anfänger-Themen 9
T Frame öffnen Java Basics - Anfänger-Themen 6
I 1 Frame und mehrere Panels klappt nicht Java Basics - Anfänger-Themen 4
I JTable in bestehenden Frame integrieren Java Basics - Anfänger-Themen 6
Y Hilfe: JOGL / OPENGL in Frame Java Basics - Anfänger-Themen 2
J Frame schließen, Ereignis behandeln, Vorgang abbrechen Java Basics - Anfänger-Themen 4
Luk10 Frame schließen Java Basics - Anfänger-Themen 2
A Frame schließen!? Help! Java Basics - Anfänger-Themen 5
A Frame reagiert nicht Java Basics - Anfänger-Themen 6
H Modalen JDialog schließen, ohne dabei das Parent-Frame zu schließen Java Basics - Anfänger-Themen 7
J Frame bleibt schwarz beim Laden Java Basics - Anfänger-Themen 11
ModellbahnerTT Unterschied zwischen zwei Frame close Varianten Java Basics - Anfänger-Themen 3
R Frame Inhalt ausrichten Java Basics - Anfänger-Themen 5
MisterSeven Java Swing - Wie Frame größe festlegen?! Java Basics - Anfänger-Themen 10
E Verständnisfrage Syntax: frame.getContentPane().add(button) Java Basics - Anfänger-Themen 11
Stillmatic1985 Label in einem Frame zentrieren Java Basics - Anfänger-Themen 4
A Grafik erstellen und in Frame einfügen Java Basics - Anfänger-Themen 17
A Java Frame per X schließen? Java Basics - Anfänger-Themen 7
H2SO3- image beim awt frame wegmachen Java Basics - Anfänger-Themen 2
kulturfenster Panel in Frame integrieren Java Basics - Anfänger-Themen 5
kulturfenster Per Button Frame schliessen Java Basics - Anfänger-Themen 2
C Frame, JFrame, JDialog Java Basics - Anfänger-Themen 12
I JButton zum frame schließen Java Basics - Anfänger-Themen 6
M Variable in Frame anzeigen Java Basics - Anfänger-Themen 11
O Beim Schließen JDialog, im Frame-Owner eine Methode starten Java Basics - Anfänger-Themen 6
hdi Desktop-Auflösung abfragen -> setLocation() von Frame Java Basics - Anfänger-Themen 5
hdi keylistener hat keinen fokus oder: listener ohne frame? Java Basics - Anfänger-Themen 10
S Übergabe von Frame-Objekt - kritisch? Java Basics - Anfänger-Themen 7
N Frame in Frame erstellen Java Basics - Anfänger-Themen 2
B Java-Frame Taschenrechner - String -> Int und umgekehrt Java Basics - Anfänger-Themen 8
G Bild wird im falschen Frame angezeigt Java Basics - Anfänger-Themen 5
G Frame soll Focus behalten Java Basics - Anfänger-Themen 2
H Frame schließen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben