Interface (WindowBuilder) Panels in einen Frame einfügen

Slimee

Mitglied
Hallo
ich ärgere mich nun schon eine Weile rum und Google konnte mir auch nicht helfen.
Ich habe mit Hilfe von WindowBuilder in Eclipse einen Frame erstellt und will nun, dass dort externe Panels (sind anscheinend eigene Klassen) eingefügt werden. Ich hab schon mehrere Sachen ausprobiert, aber ich bekomme es nicht hin. Ich kenne mich mit WindowBuilder und Java leider nicht so gut aus, muss das aber für mein mündliches Abi hinkriegen. Es sieht wie folgt aus:
  • Erstellung des Frames
Java:
private JPanel contentPane;
        //Erstellung des Frames
        public Fenster() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);

  • Einfügen des/der Panels
Java:
TestPanel tp = new TestPanel();
        contentPane.add(tp);
        PanelButtonUnten pbu = new PanelButtonUnten();
        contentPane.add(pbu);
        contentPane.updateUI();

  • Panel
Java:
public TestPanel() {
        JPanel panel = new JPanel();
        panel.setBackground(Color.BLACK);
        panel.setBounds(10, 11, 422, 180);

An sich wird doch das Panel beim Erstellen des Objektes erzeugt und müsste dann in die "contentPane" eingefügt werden. Da passiert aber gar nichts.
 
Hallo.

Und warum versuchst du es nicht selber Schreiben?
Mit dem WindowBuilder wirst du nichts lernen.

Suche einfach nach Java Swing Tutorials.

P.S Du hast kein Layout gesetzt.

Grüße
 
Hallo.

Und warum versuchst du es nicht selber Schreiben?
Mit dem WindowBuilder wirst du nichts lernen.

Suche einfach nach Java Swing Tutorials.

P.S Du hast kein Layout gesetzt.

Grüße

Weil es für das mündliche Abitur ist und wir hatten 2stündig Informatik in der Woche. Das zu lernen wäre viel zu viel Arbeit. An sich geht es mit dem WindowBuilder auch einfach nur bekomme ich dieses eine Problem nicht hin.
Das Layout habe ich etwas weiter unten stehen
 
Und wie sieht dann so eine mündliche Abiturprüfung aus?
"Frage: Auf welchen Knopf im WindowBuilder müssen Sie klicken, um ein JPanel einzufügen?"

Nein, man stellt das Programm vor und zeigt ein paar Stellen im Quellcode. Das was ich mache geht an sich schon weit darüber hinaus. An sich müssen wir nur einfache Dinge wie ein Fenster erstellen, loops und if-Befehle kennen. Aber ihr solltet das Schulsystem kritisieren und nicht mich. Mir wäre es auch lieber wenn ihr mir helfen würdet, anstatt euch nur sinnlos darüber lustig zu machen
 
Und ein Fenster erstellen ist dann ein Klicken im Window Builder? Kann ich mir nur schwer vorstellen. Ich denke Du solltest schon verstanden haben was ein Frame ist, was ein Panel und wie diese miteinander mit verschiedenen Layout Managern zu einem UI kombiniert werden.
 
Und ein Fenster erstellen ist dann ein Klicken im Window Builder? Kann ich mir nur schwer vorstellen. Ich denke Du solltest schon verstanden haben was ein Frame ist, was ein Panel und wie diese miteinander mit verschiedenen Layout Managern zu einem UI kombiniert werden.

Ich denke mal ich habe es soweit verstanden, aber ich verstehe trotzdem nicht, warum es nicht funktioniert.
 
Was meinst Du damit. bzw.
Wie sieht denn die Aufgabenstellung aus? Poste doch einmal die, dann kann man Dir eher helfen.
Obwohl Du die Angabe nicht gepostet hast.
Vielleicht meinst Du so etwas.
Java:
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

@SuppressWarnings("serial")
public class MyPanelContainer extends JPanel {
    private int componentWidth = 100;
    private int componentHeight = 100;
    private JPanel container = new JPanel(); // contains added panels

    public MyPanelContainer(int width, int height, int componentWidth, int componentHeight) {
        setPreferredSize(new Dimension(width, height));
        initScrollPane(width, height);
        container.setBackground(Color.white);
        container.setLayout(new FlowLayout());
        this.componentWidth = componentWidth;
        this.componentHeight = componentHeight;
    }

    private void initScrollPane(int width, int height) {
        // put container panel in a scroll pane to guaranty their visibility
        JScrollPane scroll = new JScrollPane(container);
        scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        scroll.setPreferredSize(new Dimension(width, height - 5));
        add(scroll);
    }

    public void addPanel(JPanel panel) {
        panel.setPreferredSize(new Dimension(componentWidth, componentHeight));
        container.add(panel);
        Component[] comps = container.getComponents();
        // adapt container's size to give room for all added panels
        container.setPreferredSize(new Dimension(componentWidth * (comps.length + 1), componentHeight));
    }

}

Java:
import javax.swing.JFrame;
import javax.swing.JPanel;

public class start {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Panels Row");
        MyPanelContainer container = new MyPanelContainer(300, 160, 80, 130);
        frame.add(container);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setResizable(false);
        frame.setVisible(true);

        container.addPanel(new JPanel());
        container.addPanel(new JPanel());
        container.addPanel(new JPanel());
    }
}
 

Neue Themen


Zurück
Oben