Roger: JAVA Elemente riesig

Hallo Leute

Ich habe ein riesiges Problem, ich versuche nun seit Stunden meine Elemente irgendwie kleiner zu kriegen. Ich habe es schon mit verschiedenen Layouts etc versucht. Kann mir da jemand helfen?

Der Code sieht so aus:

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

public class einloggen extends JFrame {

JButton submit;
 JLabel label1, label2;
 JTextField field1, field2;
 JPanel panel1, panel2, panel3;

public static void main (String [] args) {

//Button Objekt erstellen
  JButton submit = new JButton("Submit");

//Label Objekt erstellen
  JLabel label1 = new JLabel ("Username:");
  JLabel label2 = new JLabel ("Password:");

//Textfelder Objekt erstellen
  JTextField field1 = new JTextField();

JTextField field2 = new JTextField();

// Container erstellen und anzeigen
     einloggen app = new einloggen();
        app.setLocation(100,100);
        app.setSize(50,50);
        app.setTitle("Mein Fenster ;-) - Swing-Test");

//Erstellen des Buttons Submit

app.setLayout(new GridLayout(3,2));

JPanel panel1 = new JPanel();
        //app.setLayout(new GridLayout(1,0));
        app.add(label1);
        app.add(field1);

JPanel panel2 = new JPanel();
        //app.setLayout(new GridLayout(1,0));
        app.add(label2);
        app.add(field2);

JPanel panel3 = new JPanel();
        //app.setLayout(new GridLayout(1,0));
        app.add(submit);

app.show();

}

}

Freundliche Grüsse

Roger

  1. moin Roger :)

    Ich habe ein riesiges Problem, ich versuche nun seit Stunden meine Elemente irgendwie kleiner zu kriegen. Ich habe es schon mit verschiedenen Layouts etc versucht. Kann mir da jemand helfen?

    kann ich nicht nachvollziehen. Mit deinen Größenangaben (50,50) ist eher alles total winzig und abgehackt.
    Im übrigen ist "app.getContentPane().setLayout(new GridLayout(3,2));" schöner als "app.setLayout(new GridLayout(3,2));".

    Des weiteren hast du mehrere Möglichkeiten genauere Größenangaben zu machen. Entweder gibst du den Konstruktoren Größen mit (für Textfelder bspw. die Columns) oder du benutzt die .setSize()-Methoden.

    liebe Grüße aus Berlin
    lina-

    --
    Self-Code: ie:% fl:( br:^ va:) ls:/ fo:| rl:( ss:) de:] js:| mo:)
  2. Hallo,

    Ich habe ein riesiges Problem, ich versuche nun seit Stunden meine Elemente irgendwie kleiner zu kriegen.

    Wie, kleiner? Die sind doch schon ziemlich klein, wenn du das Fenster
    auf 50, 50 setzt. ;-)
    Was willst du genau haben?

    Ich habe es schon mit verschiedenen Layouts etc versucht. Kann mir da jemand helfen?

    Klar. Wenn du dein Problem seeeeehr viel genauer beschreibst.

    Ein paar Kommentare zu deinem Code:

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

    Verwende eine IDE (z.B. Eclipse oder eigentlich jede andere IDE), die
    hier automatisch die imports verwaltet. Dann steht da nicht überall
    der Stern (*), was mal zu Problem führen könnte.

    public class einloggen extends JFrame {

    Klassen solltest du immer mit großen Anfangsbuchstaben benennen. Das
    ist die gängige Konvention in Java. Alles andere verwirrt nur.

    JButton submit;
    JLabel label1, label2;
    JTextField field1, field2;
    JPanel panel1, panel2, panel3;

    Du hast keinen Modifier (z.B. public oder private) angegeben. Ich gehe
    davon aus, daß die Komponenten nur lokal Anwendung finden, weshalb
    sich hier "private" oder "protected" anbieten würden. Wenn du nichts
    angibst, bedeutet dies, daß die Felder einen Package-Scope haben. Das
    will man üblicherweise nur in bestimmten Fällen.

    public static void main (String [] args) {

    //Button Objekt erstellen
      JButton submit = new JButton("Submit");

    //Label Objekt erstellen
      JLabel label1 = new JLabel ("Username:");
      JLabel label2 = new JLabel ("Password:");

    //Textfelder Objekt erstellen
      JTextField field1 = new JTextField();

    JTextField field2 = new JTextField();

    Du hast zwar oben schön die ganzen Felder angelegt. Hier legst du aber
    Variablen mit jeweils dem gleichen Namen im lokalen Sichtbereich an.
    Somit verwendet du diese lokalen Variablen, nicht aber die Felder.
    Du überdeckst sogar die Felder.

    // Container erstellen und anzeigen
         einloggen app = new einloggen();
            app.setLocation(100,100);
            app.setSize(50,50);
            app.setTitle("Mein Fenster ;-) - Swing-Test");

    //Erstellen des Buttons Submit

    app.setLayout(new GridLayout(3,2));

    JPanel panel1 = new JPanel();
            //app.setLayout(new GridLayout(1,0));
            app.add(label1);
            app.add(field1);

    JPanel panel2 = new JPanel();
            //app.setLayout(new GridLayout(1,0));
            app.add(label2);
            app.add(field2);

    JPanel panel3 = new JPanel();
            //app.setLayout(new GridLayout(1,0));
            app.add(submit);

    Eigentlich macht man das alles üblicherweise nicht in main(), sondern
    im Konstruktor oder in einer eigenen "initialisieren()"-Methode, die
    zur Klasse (in diesem Fall "einloggen") gehört.

    app.show();

    Davor könntest du noch mindestens mal ein "app.pack();" einfügen.
    Dann werden alle Komponenten auf ihre bevorzugte Größe gesetzt, so
    daß der Dialog die potenziell beste Größe besitzt.

    Gruß
    Slyh