Slyh: JAVA Elemente riesig

Beitrag lesen

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