Swing Probleme beim Anzeigen der einzelnen Komponenten

D

Daniw21

Gast
Hallöchen,

ich habe ein großes Problem!
Ich soll für die Schule ein einfaches GUI Programm schreiben, wo ein Textfeld, ein Button, ein Label und eine Textarea eingebaut ist.
Soweit bin ich auch schon... jetzt hab ich nur das Problem das es mir nicht richtig angezeigt wird. Es wird immer der letzte Komponent angezeigt...

Wie kann ich das ändern?

Java:
import javax.swing.*;      // einbinden des Packetes swing


public class Vortrag
 {
    public static void main(String[] args)
    {



                 
                // Erstellt das Swing-Fenster
                JFrame fenster = new JFrame("Hallo Welt mit Swing");
                // Swing anweisen, das Programm zu beenden, wenn das Fenster
                // geschlossen wird
                fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                // Fügt den "Hallo Welt"-Text hinzu
                JLabel label = new JLabel("Hallo Welt");
                fenster.getContentPane().add(label);
                
                // Fügt den "Drück Mich" Button hinzu hinzu
                JButton button  = new JButton ("Drück mich");
                fenster.getContentPane().add(button);

                // Fügt das Textfeld "eingabe" hinzu
                JTextField eingabe = new JTextField ("eingabe");
                fenster.getContentPane().add(eingabe);
                
                // Fügt die Textarea "ausgabe" hinzu
                JTextArea ausgabe = new JTextArea ("ausgabe");
                fenster.getContentPane().add(ausgabe);
                


                // Zeigt das Fenster an
                fenster.setLocation (300,200); // location
                fenster.setSize(500, 500);     //Größe
                fenster.setVisible(true);      // Sichtbarkeit


        



    }

 }

Bitte bitte helft mir!
 

VfL_Freak

Top Contributor
Moin,

du verwendest das Null-Layout, so dass vermutlich alle Komponenten nacheinander an die gleiche Stelle geschrieben werden ...

Du könntest ganz einfach den Komponenten mittels "setBounds" sagen, wo sie hin sollen - bspw.:
Java:
myLabel.setBounds( new Rectangle( 100, 25, 125, 15) );

oder Du nutzt einen Layoutmanager:
Die Layout-Manager

Gruß
Klaus
 
C

Camino

Gast
JFrame hat als Standard das BorderLayout. Also, am besten ein JPanel mit einem anderen LayoutManager erstellen (z.B. FlowLayout, BoxLayout...), auf dem dann die Komponenten hinzugefügt werden, und dieses eine JPanel dann dem JFrame in den CENTER-Bereich zufügen.
 
D

Daniw21

Gast
Danke für die schnelle antwort!

Und wie bau cih das ein?

ich hab das einfach drunter gesetzt
Java:
JLabel label = new JLabel("Hallo Welt");
                fenster.getContentPane().add(label);
                label.setBounds( new Rectangle( 100, 25, 125, 15) );

aber da sagt er mir er cann die klasse Rectange nicht finden...

muss ich da noch irgendwas importieren?
 
D

Daniw21

Gast
JFrame hat als Standard das BorderLayout. Also, am besten ein JPanel mit einem anderen LayoutManager erstellen (z.B. FlowLayout, BoxLayout...), auf dem dann die Komponenten hinzugefügt werden, und dieses eine JPanel dann dem JFrame in den CENTER-Bereich zufügen.

Ich hab das vorhin so probiert:

Java:
JPanel panel  =  new JPanel();

               panel.add(label);
               panel.add(button);
               panel.add(eingabe);
               panel.add(ausgabe);

was meinst du mit einem anderen Layoutmanager? Ich bin noch ganz neu in der programmierung und kenn mich noch nicht so gut aus...
Wir programmieren nur in der Schule mit dem normalen Java Editor...

und wie kann ich so einen CENTER-Bereich hinzufügen?
 
C

Camino

Gast
Java:
...
JFrame fenster = new JFrame("Hallo Welt mit Swing");

JPanel panel  =  new JPanel();
 
panel.add(label);
panel.add(button);
panel.add(eingabe);
panel.add(ausgabe);

fenster.add(panel, BorderLayout.CENTER);

fenster.setVisible(true);
...
 
C

Camino

Gast
was meinst du mit einem anderen Layoutmanager?
Du musst dir mal die verschiedenen LayoutManager von Java anschauen. Damit kannst du deine Komponenten auf einem Container anordnen.
JFrame hat als Standard das BorderLayout (es gibt NORTH-, SOUTH-, EAST-, WEST- und CENTER-Bereiche), JPanel das FlowLayout (Komponenten werden hintereinander hinzugefügt). Du kannst einem JPanel z.B. einen bestimmten LayoutManager zuweisen.
 
D

Daniw21

Gast
JFrame hat als Standard das BorderLayout (es gibt NORTH-, SOUTH-, EAST-, WEST- und CENTER-Bereiche), JPanel das FlowLayout (Komponenten werden hintereinander hinzugefügt). Du kannst einem JPanel z.B. einen bestimmten LayoutManager zuweisen.

okay verstanden... also mit

Java:
fenster.add(panel, BorderLayout.CENTER);

ordne ich dem fenster das panel zu und das panel dem Layouttyp BorderLAyout


und mit

Java:
Panel p = new Panel();
    p.setLayout(new BorderLayout());
    p.add(fenster, BorderLayout.SOUTH);

mache ich genau das gleich nur nicht alles auf einmal stimms?

aber er sagt mir egal in welchen fall immer:
Java:
Vortrag.java:36:37: cannot find symbol
symbol  : class BorderLayout
location: class Vortrag
                panel.setLayout(new BorderLayout());
                                    ^

muss ich da noc irgendwas importieren?


DANKE FÜR DIE SEHR KOMPETENTE HILFE! :top:
 
C

Camino

Gast
okay verstanden... also mit

Java:
fenster.add(panel, BorderLayout.CENTER);

ordne ich dem fenster das panel zu und das panel dem Layouttyp BorderLAyout

Fast. Der JFrame hat als Standard das BorderLayout. Du gibst dem JFrame das JPanel und legst es dort in den CENTER-Bereich. In der Klammer steht zuerst der Container/die Komponente und als zweites wohin im BorderLayout.
 
C

Camino

Gast
und mit

Java:
Panel p = new Panel();
    p.setLayout(new BorderLayout());
    p.add(fenster, BorderLayout.SOUTH);

mache ich genau das gleich nur nicht alles auf einmal stimms?

Du solltest JPanel und nicht Panel nehmen.
Mit dem obigen Code legst du ein neues Panel an, gibst ihm den LayoutManager BorderLayout und legst dort in den SOUTH-Bereich den Frame rein, was eigentlich wenig Sinn macht.
 
D

Daniw21

Gast
So weit so gut...

also compilieren tut er jetzt alles erfolgreich...

aber leider klappt das mit dem anzeigen immer noch nicht... :´(

hier jetzt der überarbeitete sourcecode...

Java:
import javax.swing.*;      // einbinden des Packetes swing
import java.awt.BorderLayout;   // einbinden des Packetes BorderLayout

public class Vortrag
 {
    public static void main(String[] args)
    {



                 
                // Erstellt das Swing-Fenster
                JFrame fenster = new JFrame("Hallo Welt mit Swing");
                // Swing anweisen, das Programm zu beenden, wenn das Fenster
                // geschlossen wird
                fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                // Fügt den "Hallo Welt"-Text hinzu
                JLabel label = new JLabel("Hallo Welt");
                fenster.getContentPane().add(label);

                
                // Fügt den "Drück Mich" Button hinzu
                JButton button  = new JButton ("Drück mich");

                // Fügt das Textfeld "eingabe" hinzu
                JTextField eingabe = new JTextField ("eingabe");
                fenster.getContentPane().add(eingabe);
                
                // Fügt die Textarea "ausgabe" hinzu
                JTextArea ausgabe = new JTextArea ("ausgabe");
                fenster.getContentPane().add(ausgabe);

                JPanel panel  =  new JPanel();
                panel.setLayout(new BorderLayout());


                panel.add(label);
                panel.add(button);
                panel.add(eingabe);
                panel.add(ausgabe);

                fenster.add(panel, BorderLayout.CENTER);



                // Zeigt das Fenster an
                fenster.setLocation (300,200); // location
                fenster.setSize(500, 500);     //Größe
                fenster.setVisible(true);      // Sichtbarkeit


    }

 }

hab ich noch was vergessen?

Dankeschön nochmal für die nette hilfe!
 
C

Camino

Gast
1.) Du musst deine Komponenten nicht mehr dem JFrame zufügen
Code:
fenster.getContentPane().add(label);
, sondern nur noch dem JPanel.
Code:
panel.add(label);
2.) Das JPanel sollte kein BorderLayout gesetzt bekommen, wenn du die 4 Komponenten dem JPanel nur mit der add()-Methode zufügst. Das JPanel hat standardmäßig das FlowLayout, d.h. die Komponenten werden hintereinander hinzugefügt, in der Reihenfolge, wie du sie hinzufügst. Falls du die Komponenten auf dem JPanel anders anordnen möchstes (z.B. auch mit einem BorderLayout), dann kannst du beim JPanel das BorderLayout setzen (so wie du es hgemacht hattest), musst dann aber auch die Komponenten in die BEreiche NORTH, SOUTH, EAST, WEST oder CENTER einfügen. Es geht wohl nur 1 Komponente in 1 Bereich, ansonsten werden sie überlagert.

So sollte es klappen:
Java:
import javax.swing.*;      // einbinden des Packetes swing
import java.awt.BorderLayout;   // einbinden des Packetes BorderLayout
 
public class Vortrag
 {
    public static void main(String[] args)
    {
                 
                // Erstellt das Swing-Fenster
                JFrame fenster = new JFrame("Hallo Welt mit Swing");
                // Swing anweisen, das Programm zu beenden, wenn das Fenster
                // geschlossen wird
                fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
                JLabel label = new JLabel("Hallo Welt");
                JButton button  = new JButton ("Drück mich");
                JTextField eingabe = new JTextField ("eingabe");
                JTextArea ausgabe = new JTextArea ("ausgabe");
 
                JPanel panel  =  new JPanel();
 
                panel.add(label);
                panel.add(button);
                panel.add(eingabe);
                panel.add(ausgabe);
 
                fenster.add(panel, BorderLayout.CENTER);
 
 
 
                // Zeigt das Fenster an
                fenster.setLocation (300,200); // location
                fenster.setSize(500, 500);     //Größe
                fenster.setVisible(true);      // Sichtbarkeit
 
 
    }
 
 }
 
Zuletzt bearbeitet von einem Moderator:
D

Daniw21

Gast
Es funktioniert!!!

ich musste noch das
Java:
panel.setLayout(new BorderLayout());

DNAKESCHÖN!
 
D

Daniw21

Gast
So jetzt habe ich das ander probiert was gerade geschrieben hast,

ich habe das panel ins BorderLayout gestezt und die Komponenten einzeln unterteilt...

Java:
JPanel panel  =  new JPanel();
                panel.setLayout(new BorderLayout());


                panel.add(label, BorderLayout.NORTH);
                panel.add(button, BorderLayout.EAST);
                panel.add(eingabe, BorderLayout.SOUTH);
                panel.add(ausgabe, BorderLayout.WEST);
aber jetzt ist das fenster leer wenn ich das programm starte... woran liegt den das?
 

jgh

Top Contributor
hast du denn auch dein Panel dem Frame geaddet?

Java:
  fenster.add(panel, BorderLayout.CENTER);
 
D

Daniw21

Gast
Habs schon selber gefunden...

hab vergessen das fenster dem panel zuzuordnen... XD


Dankeschön für die Hilfe!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Probleme beim Drucken auf einen PDF-Drucker AWT, Swing, JavaFX & SWT 8
D JavaFX Probleme beim nachtäglichen hinzufügen der jfx dependency AWT, Swing, JavaFX & SWT 7
B 2D-Grafik paintcomponent Probleme beim zeichnen AWT, Swing, JavaFX & SWT 10
L JavaFX Probleme beim Installieren JavaFX11 / JavaFX12 -- Eclipse 2019-03 AWT, Swing, JavaFX & SWT 3
H JavaFX Probleme Beim Wechseln der scene als .fxml AWT, Swing, JavaFX & SWT 7
F JavaFX Probleme beim automatischen Konvertieren AWT, Swing, JavaFX & SWT 4
T Java FX Probleme beim befüllen eines Tableviews AWT, Swing, JavaFX & SWT 5
S AWT Probleme beim Zeichnen AWT, Swing, JavaFX & SWT 3
K Probleme beim JPasswordField AWT, Swing, JavaFX & SWT 11
D JavaFX Probleme bei Service-Klasse beim ändern der GUI AWT, Swing, JavaFX & SWT 8
K Probleme beim zeichnen mit paintComponent() AWT, Swing, JavaFX & SWT 1
C Java FX Probleme beim Schließen einer Stage AWT, Swing, JavaFX & SWT 11
H Swing Probleme beim erstellen eines neuen Objektes durch einen Button AWT, Swing, JavaFX & SWT 10
N 2D-Grafik 2 Probleme beim zeichnen AWT, Swing, JavaFX & SWT 18
C SWT probleme beim einbinden von Images AWT, Swing, JavaFX & SWT 2
S Probleme beim drucken AWT, Swing, JavaFX & SWT 13
N Probleme beim positionieren von Elementen AWT, Swing, JavaFX & SWT 2
A Probleme beim FocusListener AWT, Swing, JavaFX & SWT 6
L Probleme beim Refresh von JTable AWT, Swing, JavaFX & SWT 7
S Swing Probleme beim Aktualisieren einer JComboBox nach Auswahländerung AWT, Swing, JavaFX & SWT 2
K JList-Probleme beim Hinzufügen von Elementen AWT, Swing, JavaFX & SWT 3
P Swing Probleme beim Zeichen AWT, Swing, JavaFX & SWT 6
O Probleme beim Zeichnen und AWT-Event-Queue-0 Exception AWT, Swing, JavaFX & SWT 5
A Probleme beim Drucken AWT, Swing, JavaFX & SWT 5
R Probleme beim Zeichnen eines Koordinatensystems AWT, Swing, JavaFX & SWT 10
M Probleme beim Bild einfügen in CenterPanel AWT, Swing, JavaFX & SWT 5
A Probleme beim Drucken (Seite wird abgeschnitten) AWT, Swing, JavaFX & SWT 2
S Probleme beim Neuzeichnen eines JLabels AWT, Swing, JavaFX & SWT 6
W Probleme beim Erstellen einer Tabelle AWT, Swing, JavaFX & SWT 2
T Probleme beim Resizen einer JScrollPane AWT, Swing, JavaFX & SWT 2
M Probleme beim Hinzufügen von Objekten zu getContentPane() AWT, Swing, JavaFX & SWT 2
G Probleme beim Panelstruktur AWT, Swing, JavaFX & SWT 13
E Probleme beim Layout! AWT, Swing, JavaFX & SWT 8
E Probleme beim Layout mit Buttons und CheckboxGroup AWT, Swing, JavaFX & SWT 9
S Probleme beim Laden und Speichern von Dateien AWT, Swing, JavaFX & SWT 6
C Habe Probleme beim Bild laden! *Update 30.11.2006* AWT, Swing, JavaFX & SWT 28
C Probleme beim Serialisieren mit JOptionPane AWT, Swing, JavaFX & SWT 12
C Probleme beim ausführen von Programmen mit Fenstern+Inhalt AWT, Swing, JavaFX & SWT 3
Q JTextPane / Probleme beim Einfügen von <br>-Tags AWT, Swing, JavaFX & SWT 2
G Probleme beim Lösen einer Übungsaufgabe AWT, Swing, JavaFX & SWT 5
C Probleme beim 2. öffnen eines Fensters AWT, Swing, JavaFX & SWT 5
A Probleme beim Ausdrucken AWT, Swing, JavaFX & SWT 4
V Probleme beim Scrollen ein JPanels mit JScrollPane AWT, Swing, JavaFX & SWT 2
R Probleme beim Wiederherstellen eines JInternalFrames AWT, Swing, JavaFX & SWT 4
G Probleme beim Füllen einer JTable AWT, Swing, JavaFX & SWT 2
Juelin Probleme bei Stage.close() AWT, Swing, JavaFX & SWT 23
XWing Swing Image anzeigen und probleme mit klassen AWT, Swing, JavaFX & SWT 3
E repaint Probleme AWT, Swing, JavaFX & SWT 13
mananana Mögliche probleme die in einer GUI passieren Können AWT, Swing, JavaFX & SWT 6
S GridBagLayout - Probleme mit Bilderanzeige AWT, Swing, JavaFX & SWT 3
J Probleme mit idividueller Tablecell AWT, Swing, JavaFX & SWT 0
J Probleme mit InputDialog AWT, Swing, JavaFX & SWT 4
D JavaFX TextArea Probleme bei langen Zeilen AWT, Swing, JavaFX & SWT 1
G JavaFX SplitPane Anwendung - Controller Probleme AWT, Swing, JavaFX & SWT 5
K Probleme bei der Erstellung und Ausführung einer Jar Datei AWT, Swing, JavaFX & SWT 2
B Probleme Action Listener Taschenrechner AWT, Swing, JavaFX & SWT 27
pph080560 JavaFX Probleme mit FX AWT, Swing, JavaFX & SWT 3
M Probleme mit OpenJDK AWT, Swing, JavaFX & SWT 6
B Swing Probleme mit dem Layout AWT, Swing, JavaFX & SWT 1
Fiedlerdan Image-Pfad Probleme nach Export aus Eclipse AWT, Swing, JavaFX & SWT 31
H JFreeChart - DemoDataSetFactory Probleme AWT, Swing, JavaFX & SWT 1
H LayoutManager Probleme mit Positionierung/Abständen der Komponenten AWT, Swing, JavaFX & SWT 14
A Probleme mit gridheight (GridBagLayout) AWT, Swing, JavaFX & SWT 6
U Opaque Probleme AWT, Swing, JavaFX & SWT 3
S Probleme mit JComboboxen(?) AWT, Swing, JavaFX & SWT 18
S Swing Probleme mit MigLayout AWT, Swing, JavaFX & SWT 2
C Probleme mit createImage AWT, Swing, JavaFX & SWT 1
J Probleme mit contex Menu (javafx) AWT, Swing, JavaFX & SWT 1
J Probleme bei GameofLife AWT, Swing, JavaFX & SWT 24
S JavaFx - Button ActionEvent Probleme AWT, Swing, JavaFX & SWT 3
T Swing Probleme mit repaint() bzw. JScrollPane AWT, Swing, JavaFX & SWT 7
ImperatorMing JavaFX Probleme mit WindowEvent AWT, Swing, JavaFX & SWT 0
ImperatorMing JavaFX Probleme mit WindowEvent AWT, Swing, JavaFX & SWT 5
J LayoutManager GridBagLayout, probleme mit Anordnung von Objekten AWT, Swing, JavaFX & SWT 6
A Swing Probleme mit dem adden von JButtons zur JScrollPane AWT, Swing, JavaFX & SWT 2
D Swing Probleme mit dem Resizing AWT, Swing, JavaFX & SWT 7
G Probleme mit TextArea AWT, Swing, JavaFX & SWT 5
G JFrame Probleme AWT, Swing, JavaFX & SWT 2
G Cardlayout Refresh Probleme AWT, Swing, JavaFX & SWT 2
J Swing Probleme mit ListSelectionListener(), Inhalte der JList werden gelöscht? AWT, Swing, JavaFX & SWT 6
M JButton Probleme AWT, Swing, JavaFX & SWT 14
L Probleme mit Programm AWT, Swing, JavaFX & SWT 13
blazingblade komischerweise probleme mit jtextfield.gettext() AWT, Swing, JavaFX & SWT 9
Xanny 2D-Grafik Beginner! Probleme mit Swing, Gprahics class und paint AWT, Swing, JavaFX & SWT 13
Sin137 LayoutManager GridBagLayout Probleme AWT, Swing, JavaFX & SWT 6
H Netbeans Designer: Probleme mit JPanel und JFrame AWT, Swing, JavaFX & SWT 2
M Swing Probleme mit Frame.pack() AWT, Swing, JavaFX & SWT 1
M Swing JProgressbar und Outoputstream probleme AWT, Swing, JavaFX & SWT 2
S Swing Probleme mit transparenz der Hintergrundfarbe und JRadioButtons AWT, Swing, JavaFX & SWT 2
Z Probleme mit JPanel's AWT, Swing, JavaFX & SWT 6
T Probleme mit Anzeige von Elementen im JPanel AWT, Swing, JavaFX & SWT 1
Shams Probleme bei dem Hinzufügen von Komponenten zu einem JFrame AWT, Swing, JavaFX & SWT 3
A Swing Probleme mit JScrollPane AWT, Swing, JavaFX & SWT 6
M Layout-Probleme unter Swing AWT, Swing, JavaFX & SWT 5
J JavaFX JavaFX Probleme bei der Anzeige von Text AWT, Swing, JavaFX & SWT 18
A Probleme mit TilledBorder("***") AWT, Swing, JavaFX & SWT 4
F Bildschirmschoner Probleme mit Preview AWT, Swing, JavaFX & SWT 8
X Panel Probleme (Tetris) AWT, Swing, JavaFX & SWT 8
N JTable probleme AWT, Swing, JavaFX & SWT 5
B Probleme bei ImageIO.read (?!) AWT, Swing, JavaFX & SWT 9

Ähnliche Java Themen

Neue Themen


Oben