Swing "Eigenes" JPanel wird dem JScrollPane nicht hinzugefügt

Osram127

Mitglied
Ich habe mit dem Window-Builder von Eclipse ein JFrame mit einem JScrollPane erstellt (Klasse Oberflaeche) und anschließend die Klasse Eintrag, die ein JPanel sein soll. Mein Ziel ist es, dass wenn ich auf den JButton bHinzufügen klicke, ein neues Objekt der Klasse Eintrag als JPanel in dem JScrollPane angezeigt wird. Jedoch wird dieses Panel nicht angezeigt. Auch nachdem ich für das JScrollPane ein eigenes Panel mit BoxLayout angelegt habe, wird kein Objekt der Klasse Eintrag angezeigt. Die Konsole spuckt leider auch keine Fehlermeldung aus, also auch nix aus dem ich schlau werde.

Mein Code:
Java:
package warteliste;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import java.awt.event.*;

import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.Toolkit;
import java.awt.Font;

public class Oberflaeche extends JFrame implements ActionListener {

    private JPanel contentPane;
    private JPanel panel;
    private JTextField tf1;
    private JButton bHinzufuegen;
    private JScrollPane warteschlange;
    private static String text;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Oberflaeche frame = new Oberflaeche();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public Oberflaeche() {
        setIconImage(Toolkit.getDefaultToolkit().getImage(Oberflaeche.class.getResource("/img/icon1.png")));
        setTitle("Warteliste");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(200, 150, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);
        
        warteschlange = new JScrollPane();
        warteschlange.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
        warteschlange.setBounds(10, 11, 414, 195);
        contentPane.add(warteschlange);
        
        panel = new JPanel();
        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
        warteschlange.add(panel);
        
        tf1 = new JTextField();
        tf1.setFont(new Font("Tahoma", Font.PLAIN, 14));
        tf1.setBounds(10, 217, 299, 33);
        contentPane.add(tf1);
        tf1.setColumns(10);
        
        bHinzufuegen = new JButton("Hinzuf\u00FCgen");
        bHinzufuegen.setBounds(319, 217, 105, 33);
        bHinzufuegen.addActionListener(this);
        
        contentPane.add(bHinzufuegen);
        
    }
    
    
    public void actionPerformed(ActionEvent ae) {
        if(ae.getSource() == this.bHinzufuegen) {
            text = tf1.getText();
            
            try {
                panel.add(new Eintrag());
                System.out.println("Eintrag wurde hinzugefügt");
            } catch(Exception e1) {
                e1.printStackTrace();
            }
            
            panel.validate();
            contentPane.validate();
            warteschlange.validate();
            this.validate();
        }
    }
    
    
    public static String getText() {
        return text;
    }
}

Java:
package warteliste;

import javax.swing.*;

public class Eintrag extends JPanel {

    /**
     * Create the panel.
     */
    public Eintrag() {
        setLayout(null);
        
        JLabel name = new JLabel();
        System.out.println(Oberflaeche.getText());
        name.setText(Oberflaeche.getText());
        name.setBounds(10, 11, 248, 19);
        add(name);
        
        JCheckBox chckbxNewCheckBox = new JCheckBox("");
        chckbxNewCheckBox.setBounds(318, 7, 28, 23);
        add(chckbxNewCheckBox);

    }
}
 

LimDul

Top Contributor
Ich würde dir ja empfehlen, einen LayoutManager zu nutzen. Beim Null Layout muss man wissen was man tut.

Unter anderem musst du bei deinem Panel auf die preferredSize setzen, damit das klappt:
By default JScrollPane uses ScrollPaneLayout to handle the layout of its child Components. ScrollPaneLayout determines the size to make the viewport view in one of two ways:

If the view implements Scrollable a combination of getPreferredScrollableViewportSize, getScrollableTracksViewportWidth and getScrollableTracksViewportHeightis used, otherwise
getPreferredSize is used.

Hier steht auch noch was: https://docs.oracle.com/javase/tutorial/uiswing/components/scrollpane.html#sizing
 

Osram127

Mitglied
Ok danke, es hat mit setViewPortView() funktioniert. Jetzt habe ich allerdings eine neue Frage: Wie kann ich dann der warteschlange wieder Einträge entfernen? Bei add() ging das ja immer mit remove(), aber wie geht das bei setViewportView()?
 

mihe7

Top Contributor
Analog zu panel.add rufst Du panel.remove auf :) Die View des Viewports ändert sich ja nicht - es ist nach wie vor das selbe Panel, das angezeigt wird.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H LayoutManager RPG Programmieren, eigenes Spielfeld grafisch generieren aus Tileset AWT, Swing, JavaFX & SWT 18
M Swing JComboBox eigenes Design AWT, Swing, JavaFX & SWT 3
L LookAndFeel Eigenes Design für die Applikation AWT, Swing, JavaFX & SWT 4
L JavaFX als eigenes Objekt AWT, Swing, JavaFX & SWT 3
M Plugin oder eigenes Tool mit zB SWING AWT, Swing, JavaFX & SWT 2
E Eigenes TableModel für ArrayList<String[]> AWT, Swing, JavaFX & SWT 5
N LookAndFeel Wie kann ich mein eigenes LookAndFeel machen? AWT, Swing, JavaFX & SWT 6
1 Eigenes Layout schreiben AWT, Swing, JavaFX & SWT 4
J Eigenes Gui/ Look and Feel AWT, Swing, JavaFX & SWT 14
D Eigenes Textfeld AWT, Swing, JavaFX & SWT 8
A Minimalestopuhr: JLabel.setText() durch eigenes Event ändern AWT, Swing, JavaFX & SWT 6
C Eigenes Hintergrundbild einfügen AWT, Swing, JavaFX & SWT 6
M Eigenes Panel aus Component? AWT, Swing, JavaFX & SWT 5
3 Eigenes Frame/Window programmieren AWT, Swing, JavaFX & SWT 2
F LayoutManager Eigenes Layout die Lösung?! AWT, Swing, JavaFX & SWT 4
P Eigenes Textverarbeitungsprogramm AWT, Swing, JavaFX & SWT 4
R [JTree/DefaultTreeCellRenderer] eigenes Renderer-Panel, so breit wie der JTree AWT, Swing, JavaFX & SWT 2
Developer_X LookAndFeel Eigenes Look And Feel erstellen AWT, Swing, JavaFX & SWT 33
B SWT Eigenes Icon für CheckboxTreeViewer AWT, Swing, JavaFX & SWT 3
KrokoDiehl Swing Design-Frage: eigenes Line-Wrapping AWT, Swing, JavaFX & SWT 5
M Swing eigenes StyledDocument AWT, Swing, JavaFX & SWT 2
D eigenes Tablemodel, Zeile löschen ArrayindexOOB excp AWT, Swing, JavaFX & SWT 4
S JTree mit Daten aus Model füllen, eigenes TreeModel (gute Dokumentation des Problems) AWT, Swing, JavaFX & SWT 2
P Eigenes TableModel abgeleitet von AbstractTableModel (neue rows nicht sichtbar) AWT, Swing, JavaFX & SWT 6
M Eigenes ActionEvent / Eigener Listener AWT, Swing, JavaFX & SWT 2
A JTable, eigenes TableModel und dessen Objekte AWT, Swing, JavaFX & SWT 4
G JToolbar gleich als eigenes Fenster öffnen AWT, Swing, JavaFX & SWT 2
G Eigenes ComboBoxModel AWT, Swing, JavaFX & SWT 2
M eigenes DialogFenster AWT, Swing, JavaFX & SWT 4
L Button ändert eigenes Bild und Progressbar-Value nicht AWT, Swing, JavaFX & SWT 6
J eigenes JOptionPane ? AWT, Swing, JavaFX & SWT 2
D Eigenes Tooltip AWT, Swing, JavaFX & SWT 5
G eigenes option pane AWT, Swing, JavaFX & SWT 5
C Eigenes Event AWT, Swing, JavaFX & SWT 8
S Eigenes Package für die GUI? AWT, Swing, JavaFX & SWT 6
P Eigenes Look&Feel schreiben (Tutorials?) AWT, Swing, JavaFX & SWT 6
B Eigenes Events AWT, Swing, JavaFX & SWT 3
G für showInputDialog kein eigenes Icon auswählen AWT, Swing, JavaFX & SWT 6
M JDialog und eigenes Icon AWT, Swing, JavaFX & SWT 10
P Zwei JPanel übereianderlegen AWT, Swing, JavaFX & SWT 14
XWing Basic JPanel mit 2 Buttons beutzen. AWT, Swing, JavaFX & SWT 10
G JPanel per Drag and Drop JButtons und Bilder ablegen AWT, Swing, JavaFX & SWT 1
G JPanel mit JButtons und Bilder AWT, Swing, JavaFX & SWT 5
N AWT JPanel zu Jframe hinzufügen AWT, Swing, JavaFX & SWT 2
M clear JPanel before repainting AWT, Swing, JavaFX & SWT 1
B ImageIcon auf JPanel austauschen AWT, Swing, JavaFX & SWT 3
T Swing Reload JPanel + darin liegende ProgressBar AWT, Swing, JavaFX & SWT 9
P Swing Mehrere JLabels mit ImageIcon in JPanel lesen AWT, Swing, JavaFX & SWT 1
E JScrollPane mit JPanel verbinden AWT, Swing, JavaFX & SWT 1
F JPanel Celleditor AWT, Swing, JavaFX & SWT 8
B JPanel-Inhalte inkl. JTextarea zoomen? AWT, Swing, JavaFX & SWT 3
B Mit ContentPane werden Komponenten angezeigt, mit SplitPane, JPanel nicht? AWT, Swing, JavaFX & SWT 6
CptK Funktionsgraphen effizient zeichnen und nur Teile von JPanel erneuern AWT, Swing, JavaFX & SWT 2
P Button simpler random auf einem JPanel verteilen? AWT, Swing, JavaFX & SWT 3
Ich lerne Java. Swing Von JPanel A auf JPanel B zugreifen. AWT, Swing, JavaFX & SWT 4
A JPanel austauschen und Focus geben AWT, Swing, JavaFX & SWT 3
E Auf JPanel malen und davor JComponenten anzeigen AWT, Swing, JavaFX & SWT 12
L JComponent aus JPanel anhand Mausposition ermitteln AWT, Swing, JavaFX & SWT 10
J JPanel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
B Verschiebbares JPanel "ruckelt" im Randbereich AWT, Swing, JavaFX & SWT 2
S Swing JPanel nimmt keinen KeyListener an AWT, Swing, JavaFX & SWT 7
K JLabel mit Bilder im nicht initialisierten JPanel hinzufügen AWT, Swing, JavaFX & SWT 5
Hatsi09 Swing JPanel Bild einfügen AWT, Swing, JavaFX & SWT 14
L JPanel zeigt keinen Inhalt AWT, Swing, JavaFX & SWT 1
dereki2000 JPanel mit Rückgbe wie bei JOptionPane AWT, Swing, JavaFX & SWT 3
E Hintergrundfarbe setzen in JPanel funktioneirt nicht AWT, Swing, JavaFX & SWT 4
P JPanel KeyListener hinzufügen AWT, Swing, JavaFX & SWT 8
S Nach scrollen verschwindet das zuvor im JPanel gezeichnete AWT, Swing, JavaFX & SWT 2
P Bewegung eines Balkens in eineum JPanel welches als Spielfeld fungiert AWT, Swing, JavaFX & SWT 2
L Swing JPanel Größe anpassen AWT, Swing, JavaFX & SWT 6
D Platzierung von JTextfield in JPanel AWT, Swing, JavaFX & SWT 3
D Swing Anwendung ohne JPanel erstellen AWT, Swing, JavaFX & SWT 1
M Swing JPanel in JScrollPane AWT, Swing, JavaFX & SWT 3
M Zwei JPanel übereinander nur vorderes "repainten" AWT, Swing, JavaFX & SWT 3
J 2D-Grafik Background einer Jpanel Klasse ändern AWT, Swing, JavaFX & SWT 1
J Ziehen eines Buttons im JPanel AWT, Swing, JavaFX & SWT 2
J Button lässt sich nicht auf dem JPanel verschieben AWT, Swing, JavaFX & SWT 5
D zwei JLabel stapeln in einem JPanel AWT, Swing, JavaFX & SWT 5
DaCrazyJavaExpert Swing JPanel "ContentPane" wird nicht gesetzt/angezeigt AWT, Swing, JavaFX & SWT 16
DaCrazyJavaExpert Swing Größe des JPanel ändern/wird nicht geändert. AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing JPanel wird in JScollPane nicht angezeigt AWT, Swing, JavaFX & SWT 2
it_is_all JPanel verschwindet nach Button-Klick AWT, Swing, JavaFX & SWT 2
B Bar Plot in Swing JPanel AWT, Swing, JavaFX & SWT 0
F Screenshot eines JPanel AWT, Swing, JavaFX & SWT 3
S JPanel rotieren, Bild ist abgeschnitten, Clipping? AWT, Swing, JavaFX & SWT 0
M Swing JPanel flüssig verschieben AWT, Swing, JavaFX & SWT 5
G Nur ein JPanel wird angezeigt AWT, Swing, JavaFX & SWT 9
kilopack15 JPanel im laufenden Zustand einfärben AWT, Swing, JavaFX & SWT 2
kilopack15 JPanel Farbverwaltung AWT, Swing, JavaFX & SWT 1
A JScrollPane soll JPanel mit JButtons enthalten und eine Scollbar anzeigen AWT, Swing, JavaFX & SWT 1
A Swing JLabels in einer ForEach Schleife an den JPanel anheften (UNO Netzwerkspiel) AWT, Swing, JavaFX & SWT 1
L JPanel zeichnet im Konstrukter erzeugten Hintergrund nicht AWT, Swing, JavaFX & SWT 10
Java_RY wie kann ich auf JButtons in einem JPanel zugreifen AWT, Swing, JavaFX & SWT 3
F Zeichnung einem JPanel im Layoutmanager zuweisen AWT, Swing, JavaFX & SWT 3
Meeresgott Swing Umgang mit JPanel AWT, Swing, JavaFX & SWT 4
R 2D-Grafik PNG Bild per Graphics auf JPanel AWT, Swing, JavaFX & SWT 9
K JPanel Bilder bei Windows nicht darstellbar AWT, Swing, JavaFX & SWT 6
W Swing JPanel nur einmal nach mehreren Änderungen neu zeichnen AWT, Swing, JavaFX & SWT 1
J Swing Zeichenfläche im JPanel des Haupfenster anzeigen lassen AWT, Swing, JavaFX & SWT 4
A Swing JPanel zeigt Buttons nicht an AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben