Breite von Textfeldern trotz Layoutmanager

uwe_P

Mitglied
Hallo,
ich probiere gerade die Layoutmanager aus und habe nun folgendes Problem:

1.)Wenn ich meinem Frame keinen Größenwert Mitgebe, startet es immer Minimiert, anstatt in der Mindestgröße der Panel und deren Inhalt.

2.) Wenn ich das Fenster dann vergrößer, werden mit die leeren JTextfelder auch nur minimiert angezeigt. Warum? Ein JTextfield.setSize(); hat keine Auswirkung.

Danke für Eure Hilfe.

Gruß

Uwe

Java:
import javax.swing.*;
import java.awt.*;

public class Test extends JFrame{
        public static void main(String[] args){         
            Test uev = new Test();     
        }
    

    private static final long serialVersionUID = 1;
    
    JPanel p_eingabe = new JPanel();
    JPanel p_kunde = new JPanel();
    JPanel p_quelle = new JPanel();
        
    JLabel lb_quelle = new JLabel();
    JLabel lb_kunde = new JLabel();
    
    JTextField tf_quelle = new JTextField();
    JTextField tf_kunde = new JTextField();





    public Test()
    {
        this.setTitle("Hier kommt ein Titel");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      this.setLayout(new BorderLayout());
      this.setVisible(true);
      this.eingabe();
      
        
    }

    public void eingabe(){
        p_eingabe.setLayout(new GridLayout(7,1));
        p_eingabe.setBorder( BorderFactory.createLineBorder(Color.black ));
            p_kunde.setLayout(new FlowLayout(FlowLayout.LEFT ));
            p_kunde.setBorder( BorderFactory.createLineBorder(Color.black ));
                lb_kunde.setText("Kunde: ");
                lb_kunde.setVisible(true);
                tf_kunde.setText("Bitte aus PhraseExpress \u00fcbernehmen!");
                 tf_kunde.setVisible(true);
             p_kunde.add(lb_kunde);
             p_kunde.add(tf_kunde);
        p_eingabe.add(p_kunde);
            p_quelle.setLayout(new FlowLayout(FlowLayout.LEFT ));
            p_quelle.setBorder( BorderFactory.createLineBorder(Color.black ));
                lb_quelle.setText("Quelle: ");
                lb_quelle.setVisible(true);
                tf_quelle.setText("");
                tf_quelle.setVisible(true);
                tf_quelle.setSize(500,20);
            p_quelle.add(lb_quelle);
            p_quelle.add(tf_quelle);
        p_eingabe.add(p_quelle);
        this.add(p_eingabe,BorderLayout.CENTER);   
    }
}       
            
            
            
            
            
    /*
        p_ziel = new JPanel();
        p_datei = new JPanel();

    
        
        

                
                        lb_ziel.setText("Ziel");
                lb_ziel.setVisible(true);
        
        
        
        lb_dateipfad.setText("Pfad f\u00fcr UserExit");
        lb_dateipfad.setVisible(true);
        
            
        p_eingabe.add(lb_quellpfad);
        
        
        p_eingabe.add(tf_kunde);
        p_eingabe.add(lb_quellpfad);
        p_eingabe.add(lb_zielpfad);
        p_eingabe.add(lb_dateipfad);
    
        */
        /*       
        lb_newbpd = new JLabel("BPD-Name");
      lb_newbpd.setVisible(true);
            
      lb_oldbpd = new JLabel("Bereits eingegebene BPD's");
    lb_oldbpd.setBounds(50,400,300,30);
    lb_oldbpd.setVisible(true);
          
       lb_format = new JLabel("Auszugsformat");
         lb_format.setBounds(440,400,100,30);
         lb_format.setVisible(true);
                
       lb_aa = new JLabel("Auftragsart");
         lb_aa.setBounds(560,400,200,30);
         lb_aa.setVisible(true);
            
    lb_dir = new JLabel("Ordner/Dateiname");
      lb_dir.setBounds(670,350,100,30);
      lb_dir.setVisible(true);
            
      lb_olddir = new JLabel("Bereits eingegebene Ordner-/Dateinamen");
    lb_olddir.setBounds(670,400,300,30);
    lb_olddir.setVisible(true);
    
    
    lb_ordner = new JLabel("Soll ein Ordner f\u00dcr jede BPD angelegt werden?");
    lb_ordner.setBounds(50,570,300,30);
    lb_ordner.setVisible(true);
    
    
    lb_datum = new JLabel("Mit Datum im Dateinamen?");
    lb_datum.setBounds(470,570,170,30);
    lb_datum.setVisible(true);
    
    */
 

Neumi5694

Top Contributor
1. Du fügst die Komponenten erst nach dem Sichtbarmachen hinzu.
2. Pack fehlt
Java:
        this.eingabe();
        this.pack();
        this.setVisible(true);
und am besten vor setVisible (und nach pack()) noch
Code:
this.setLocationRelativeTo(null);
 

uwe_P

Mitglied
Hey Mega, hat super Funktioniert. Nur noch eine Frage: "Wie setze ich denn innerhalb eines JPanels die Größe meiner Textfelder? Ein leeres JTextfeld wird auch nur ganz schmal angezeigt?
 

Neumi5694

Top Contributor
Du kannst z.B. den Columns-Wert setzen.
Wenn es aber z.B. auf Breite gestreckt werden soll, dann brauchst du den entsprechenden Layoutmanager.

Lass die Finger von PreferredSize, das skaliert nicht, wenn du z.B. die Schriftgröße änderst. PreferredSize ist dazu da, einem Element eine fixe Größe zu geben.
 

mihe7

Top Contributor
Nur noch eine Frage: "Wie setze ich denn innerhalb eines JPanels die Größe meiner Textfelder? Ein leeres JTextfeld wird auch nur ganz schmal angezeigt?
Komponenten haben innerhalb ihres Containers eine Lage und Größe (bounds bzw. location und size). Die könntest Du selbst bestimmen, wenn Du ohne Layout-Manager arbeiten würdest, was nicht zu empfehlen ist.

Der Layout-Manager übernimmt zwei Teilaufgaben:

a) er berechnet die bevorzugte Größe des Containers
b) er verteilt die Komponenten auf den im Container zur Verfügung stehenden Platz (er bestimmt also Position und Größe, die Bounds, der Komponenten).

Dazu bedient er sich in der Regel mind. der bevorzugten Größe der Komponenten, die der Container enthält. Allerdings sind bevorzugte Größe, minimale und maximale Größe lediglich als Hinweise an den Layout-Manager zu verstehen. Die Bounds (location und size) geben dagegen die tatsächliche Größe und Lage der Komponente innerhalb ihres Containers an.

Wir können uns ja mal ein einfaches Layout wie FlowLayout ansehen, wobei wir ein paar Eigenschaften unberücksichtigt lassen.

FlowLayout lagert Komponenten nebeneinander aus. Wenn sie keinen Platz mehr haben, wird umgebrochen. Was also ist die bevorzugte Größe eines Containers mit FlowLayout? Ganz einfach: die Breite und Höhe einer Zeile, in der sich alle Komponenten der Reihe nach nebeneinander befinden.

Wenn die bevorzugte Größe eines JPanels mit FlowLayout abgerufen wird, dann wird das FlowLayout nach der bevorzugten Größe des JPanels gefragt. Das FlowLayout nimmt nun alle Komponenten, die sich in dem JPanel befinden und lässt sich von diesen die bevorzugte Größe zurückgeben. Dabei merkt man sich die maximale Höhe und addiert alle Breiten zu einer Gesamtbreite. Das ist dann eben die bevorzugte Größe des JPanels. Teilufgabe a) erschlagen.

Kommen wir zu Teilaufgabe b), in der es nun um das tatsächliche "Layouten" geht. Das FlowLayout bekommt nun den Container, der zu diesem Zeitpunkt bereits eine Größe besitzt. Jetzt wird eine Komponente nach der andern nebeneinander gesetzt (man merkt sich dabei die bisherige maximale Höhe) - bis eben kein Platz mehr ist. Dann wird in die nächste Zeile gesprungen (y-Koordinate wird um die bisherige maximale Höhe erhöht) und von vorne begonnen. Das macht man so lange, bis alle noch sichtbaren Komponenten ausgelagert sind.

Es gibt noch eine Besonderheit, wenn man die preferred Size einer Komponente explizit setzt: dann nämlich wird die bevorzugte Größe nicht mehr berechnet. Insofern ist der Hinweis von @Neumi5694 vollkommen richtig; wenn Du die preferred Size des Textfelds setzt, skaliert nichts mehr (zumindest nicht nach oben).

Welche Möglichkeiten hast Du?
  1. Bei JTextField kannst Du die Spalten angeben. Dann berechnet das JTextField seine bevorzugte Größe anhand der Spaltenanzahl (die Breite einer Spalte entspricht dem Buchstaben m).
  2. Du kannst versuchen, die minimale Größe festzulegen. Das erfordert allerdings einen LayoutManager, der diese berücksichtigt.
  3. Du verwendest einen geeigneten LayoutManager (GridBagLayout kann so ziemlich alles, ist aber nicht ganz unkompliziert)
  4. Du schreibst einen eigenen LayoutManager (nur, wenn es gar nicht anders geht).
Das mal als kleine Übersicht, ich hoffe, kann sein, dass ich noch was vergessen habe - die Möglichkeiten sind mannigfaltig.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
krgewb Breite und Höhe eines Bildes in base64 auslesen Java Basics - Anfänger-Themen 3
T TextField Breite automatisch gebunden Java Basics - Anfänger-Themen 8
AnnaBauer21 GridBagLayout JLabel weightx: Unterschiedliche Breite mit & ohne Text Java Basics - Anfänger-Themen 6
J Breite eines Strings bestimmen Java Basics - Anfänger-Themen 4
P Shape Zeichnen klappt nicht - einlesen der Breite/Höhe schon Java Basics - Anfänger-Themen 1
T Ändern der Breite eines Zeichens Java Basics - Anfänger-Themen 3
M Die Breite bei der Gui richtig setzen. Java Basics - Anfänger-Themen 1
M TableColumn Breite setzen Java Basics - Anfänger-Themen 9
D Probleme bei der Column-Breite einer JTable Java Basics - Anfänger-Themen 4
E Breite des Schiebers in JscrollPane verändern Java Basics - Anfänger-Themen 2
R JTable Column Breite bei Veränderung registrieren Java Basics - Anfänger-Themen 2
H Probleme, TableColumn-Breite zu setzen Java Basics - Anfänger-Themen 4
D JMenuBar Breite ? Java Basics - Anfänger-Themen 3
dummy2 Negative Höhe / Breite bei Figuren Java Basics - Anfänger-Themen 2
dummy2 Breite / Höhe Java Basics - Anfänger-Themen 4
R Noch eine Frage: Breite des Applets im Browser ermitteln Java Basics - Anfänger-Themen 7
M Breite von String für Serverseitige nutzung Berechnen Java Basics - Anfänger-Themen 3
x-tshainge Interface Wie kann ich aus Textfeldern auslesen Java Basics - Anfänger-Themen 6
S Durchschnitt berechnen aus zwei Textfeldern Java Basics - Anfänger-Themen 21
Anfänger2011 Auslesen von 2 Textfeldern Java Basics - Anfänger-Themen 4
T Summen von Textfeldern Java Basics - Anfänger-Themen 3
J Aktivierung eines Buttons nach Eingabe in Textfeldern (DocumentListener) Java Basics - Anfänger-Themen 4
S Arbeiten mit einer CSV Datei und Überprüfen von einem Datum in einem Textfeldern Java Basics - Anfänger-Themen 4
C Text aus Textfeldern auslesen Java Basics - Anfänger-Themen 8
F Erstellung eines Fensters mit Button und Textfeldern Java Basics - Anfänger-Themen 10
M Exceptions bei Textfeldern abfangen Java Basics - Anfänger-Themen 2
M Cut, Copy und Paste mit mehreren Textfeldern? Java Basics - Anfänger-Themen 3
G Hinweis bei Änderung des Inhalts in Textfeldern? Java Basics - Anfänger-Themen 4
D Inhalt von erzeugten Textfeldern holen. Java Basics - Anfänger-Themen 10
M An passung von Textfeldern? Java Basics - Anfänger-Themen 7
W Bilder als Hintergrund bei Textfeldern? Java Basics - Anfänger-Themen 2
R Entfernen von Textfeldern Java Basics - Anfänger-Themen 7
G Mehreren Textfeldern Zeichenketten zuweisen Java Basics - Anfänger-Themen 3
A ActionListener bei Textfeldern? Java Basics - Anfänger-Themen 4
I Programm erkennt nicht an das Array zurückgegeben wird trotz Initialisierung *einfach* Java Basics - Anfänger-Themen 9
tun3d Packet trotz richtiger Addressierung nicht auffindbar? Java Basics - Anfänger-Themen 10
P Apache Derby wird in Eclipse trotz Anbindung nicht gefunden Java Basics - Anfänger-Themen 6
Kotelettklopfer Output korrekt trotz falschem Lösungsweg !? Java Basics - Anfänger-Themen 99
P NoClassDefFoundError: org/apache/commons/collections4/ListValuedMap trotz vorhandener Klasse? Java Basics - Anfänger-Themen 10
E Timer trotz erwartender Eingabe durchlaufen lassen Java Basics - Anfänger-Themen 11
V_Fynn03 Erste Schritte JButton funktioniert nicht trotz richtiger Methode. Java Basics - Anfänger-Themen 17
J bundel - Datei wird nicht gefunden. Trotz STRG-SHIFT-J Java Basics - Anfänger-Themen 2
U UnsupportedClassVersionError trotz neuster JRE und JDK Version Java Basics - Anfänger-Themen 7
J Unterschiedliche Ordnerstrukturen trotz gleicher Entwicklungsumgebungen Java Basics - Anfänger-Themen 3
M java.io.FileNotFoundException trotz dass Verzeichnis korrekt angegeben ist! Java Basics - Anfänger-Themen 20
helldunkel While Schleife trotz false Java Basics - Anfänger-Themen 4
L Methoden if Bedingung trotz Erfüllung, nicht angesprochen Java Basics - Anfänger-Themen 12
L [Verständnisproblem] Array wird trotz void rückgabe verändert. Java Basics - Anfänger-Themen 5
C Threads SwingWorker läuft trotz cancel weiter Java Basics - Anfänger-Themen 22
M Interpreter-Fehler Nullpointerexception trotz Ordentlicher Initialisierung Java Basics - Anfänger-Themen 4
D javac kann trotz PATH-Eintrag nicht gefunden werden (Hello World) Java Basics - Anfänger-Themen 10
P Threads Trotz Threads wird nur 1 Prozessorkern ausgelastet Java Basics - Anfänger-Themen 7
A Heap Space Error bei rekursiver Suche in Dateien trotz nur einer Zeile im Speicher Java Basics - Anfänger-Themen 26
X Array trotz Befüllung "null" Java Basics - Anfänger-Themen 11
M Arrayfelder werden trotz Beschränkung unbeschrenkt ausgegeben Java Basics - Anfänger-Themen 2
Fab1 alte Java Datei wird ausgeführt (trotz Änderung) Java Basics - Anfänger-Themen 4
O Downloaden: Trotz If Abfrage wird Datei heruntergeladen Java Basics - Anfänger-Themen 2
M Datentypbewahrung trotz Erbung Java Basics - Anfänger-Themen 12
L Applet : keine Recht für Zugriff auf Clipboard (trotz Zertifikat) Java Basics - Anfänger-Themen 4
N Input/Output EOF-Exception trotz Fehlerüberprüfung Java Basics - Anfänger-Themen 2
U Übersicht trotz mehrdimensionaler Arraylisten Java Basics - Anfänger-Themen 17
S Java Heap space trotz -Xmx1024 Java Basics - Anfänger-Themen 10
J trotz Error weitermachen Java Basics - Anfänger-Themen 4
V Kein neuer Thread trotz Runnable Java Basics - Anfänger-Themen 4
X JFrame als JAR unsichtbar trotz Exception Handling Java Basics - Anfänger-Themen 5
Y Trotz add wird Image in GradBagLayout nicht angezeigt Java Basics - Anfänger-Themen 5
L Polymorphie <identifier> expected trotz "Angabe" Java Basics - Anfänger-Themen 2
O ausgabe spinnt trotz erfolgreichem kompilieren Java Basics - Anfänger-Themen 2
D Jar klappt nicht trotz main Methode Java Basics - Anfänger-Themen 19
S JButton trotz Box-Layout skalieren Java Basics - Anfänger-Themen 6
D OpenCSV Fehllender Konstruktor trotz import und Buildpath Eintrag Java Basics - Anfänger-Themen 1
X dll löschen trotz zugriff durch java programm Java Basics - Anfänger-Themen 5
U if-Anweisung trotz Division/0 Java Basics - Anfänger-Themen 6
K BufferedReader/Writer trotz Cache? Java Basics - Anfänger-Themen 9
D Ein boolean[] Array größer als 63.000.000 erstellen? trotz -Xms und -Xmx.... Java Basics - Anfänger-Themen 7
Q Listen - DefaultListModel trotz Design ueber GUI? Java Basics - Anfänger-Themen 10
A Trotz Thread ist Program nicht erreichbar Java Basics - Anfänger-Themen 3
Q Vector verändert trotz final seine Größe Java Basics - Anfänger-Themen 5
A kein zugriff auf variable trotz public? Java Basics - Anfänger-Themen 3
D nicht genug speicher - profiling trotz error Java Basics - Anfänger-Themen 5
D Buttons gehen trotz enebled(false) Java Basics - Anfänger-Themen 8
J Spielfigur wird trotz erfolgreich aufgerufener Methode nicht Java Basics - Anfänger-Themen 22
H javac Befehl trotz Variablen einbindung ned gefunden Java Basics - Anfänger-Themen 23
C Trotz "synchronized" unerwartete Ausgabe Java Basics - Anfänger-Themen 2
K Midi stoppt trotz stop button nicht Java Basics - Anfänger-Themen 3
R windowclosing - fenster schließt immer trotz abfrage Java Basics - Anfänger-Themen 2
C Thread läuft und läuft, trotz interrupt() Java Basics - Anfänger-Themen 9
T laagen trotz Double-Buffering Java Basics - Anfänger-Themen 5
S ClassNotFoundException trotz JAR Einbindung in Eclipse Java Basics - Anfänger-Themen 2
T tooltip trotz gedrückter maustaste Java Basics - Anfänger-Themen 2
0 NoSuchMethodError: main trotz vorhandener Main Methode? Java Basics - Anfänger-Themen 9
Silver-Blue mehrere Instanzen einer Klasse, trotz Random immer das Selbe Java Basics - Anfänger-Themen 7
X trotz gleicher variablen nicht equal Java Basics - Anfänger-Themen 5
G Trotz Abfrage immer noch Zahlen doppelt Java Basics - Anfänger-Themen 3

Ähnliche Java Themen


Oben