JSeperator in JPanel

Status
Nicht offen für weitere Antworten.

Eckbert88

Mitglied
Hallo,

ich habe folgendes Problem:
ich will JComboBoxen und JTextLabels in einem JPanel voneinander trennen. Wenn ich den JSeperator benutze verzieht es das komplette Fenster:

Java:
        JPanel fieldsPane = new JPanel(new SpringLayout());
        fieldsPane.add(dozentlbl);
	fieldsPane.add(dozent);

        fieldsPane.add(new JSeparator(JSeparator.HORIZONTAL),
        BorderLayout.LINE_START);

        fieldsPane.add(name);
	fieldsPane.add(nameText);
        fieldsPane.add(studienganglbl);
        fieldsPane.add(studiengang);
        fieldsPane.add(lehrveranstaltunglbl);
	fieldsPane.add(lehrveranstaltung);

	fieldsPane.setLayout(new SpringLayout());
	SpringUtilities.makeCompactGrid(fieldsPane, 4, 2,
                                                    6, 6,
                                                    6, 6);


Anbei auch ein Bild von der GUI:


041009174637_Bildschirmfoto_2009-10-04_um_17.45.23.png


Wie krieg ich die Elemente in eine Reihe? Danke!
 
Hey, ich glaube das Beste wär, wenn du mal den kompletten code Postest! was für eine LayoutManager nutzt du?
 
Da das ein Uniprojekt ist darf ich keine Layout Manager benutzen. Muss alles per Hand programmiert werden 🙁
Hier mal das gesamte Formular (falls es hilft):

Java:
package de.hdm.iSchedule.gui;

import java.util.Vector;

import java.awt.BorderLayout;
import java.awt.Color;
import java.rmi.RemoteException;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.JTextField;
import javax.swing.SpringLayout;

import de.hdm.iSchedule.data.Dozent;
import de.hdm.iSchedule.data.Lehrveranstaltung;
import de.hdm.iSchedule.data.Studiengang;

public class Dozentformular {

    static InterfaceClient ic = new InterfaceClient();

    private JComboBox lehrveranstaltung = new JComboBox();
    private JComboBox studiengang = new JComboBox();
    private JComboBox dozent = new JComboBox();

    private JTextField nameText;


    public void setDozent(Dozent d) {
        if (d!= null) {
            try {
               nameText.setText(d.getName());

            } catch (RemoteException re) {
               System.out.println("RemoteException");
               System.out.println(re);
            }
        }
    }

      void removeDozent() {
        nameText.setText("");

	}

      String getName() {
	    return nameText.getText();
    }

      JPanel generateComponents(StundenplanGUI stundenplanGui)
        throws RemoteException {
	JLabel name = new JLabel("Name", JLabel.TRAILING);
	nameText = new JTextField(5);
	nameText.setEditable(true);
        nameText.setActionCommand("changeName");
        nameText.addActionListener(stundenplanGui);

	JLabel studienganglbl = new JLabel("Studiengang wählen", JLabel.TRAILING);
        /**
         * Hier wird die Methode getAllLehrveranstaltung im ClientInterface aufgerufen
         * um alle Kategorien aus der DB zu laden
         */
        Vector<Studiengang> studiengaenge = ic.getAllStudiengang();

        for (Studiengang sg : studiengaenge) {
            studiengang.addItem(sg.getStudiengang());
        }

        studiengang.setVisible(true);
        studiengang.setActionCommand("selectStudiengang");
        studiengang.addActionListener(stundenplanGui);


        JLabel lehrveranstaltunglbl = new JLabel("Lehrveranstaltung wählen", JLabel.TRAILING);
        /**
         * Hier wird die Methode getAllLehrveranstaltung im ClientInterface aufgerufen
         * um alle Kategorien aus der DB zu laden
         */
        Vector<Lehrveranstaltung> lehrveranstaltungen = ic.getAllLehrveranstaltungen();

        for (Lehrveranstaltung lv : lehrveranstaltungen) {
            lehrveranstaltung.addItem(lv.getBezeichnung());
        }

        lehrveranstaltung.setVisible(true);
        lehrveranstaltung.setActionCommand("selectLehrveranstaltung");
        lehrveranstaltung.addActionListener(stundenplanGui);


        JLabel dozentlbl = new JLabel("Dozent wählen", JLabel.TRAILING);
        /**
         * Hier wird die Methode getAllLehrveranstaltung im ClientInterface aufgerufen
         * um alle Kategorien aus der DB zu laden
         */
        Vector<Dozent> dozents = ic.getAllDozenten();

        for (Dozent d : dozents) {
            dozent.addItem(d.getName());
        }

        dozent.setVisible(true);
        dozent.setActionCommand("selectDozent");
        dozent.addActionListener(stundenplanGui);


	JPanel fieldsPane = new JPanel(new SpringLayout());
        fieldsPane.add(dozentlbl);
	fieldsPane.add(dozent);
        fieldsPane.add(name);
	fieldsPane.add(nameText);
        fieldsPane.add(studienganglbl);
        fieldsPane.add(studiengang);
        fieldsPane.add(lehrveranstaltunglbl);
	fieldsPane.add(lehrveranstaltung);

	fieldsPane.setLayout(new SpringLayout());
	SpringUtilities.makeCompactGrid(fieldsPane, 4, 2,
                                                    6, 6,
                                                    6, 6);

	JButton submit = new JButton("Ändern");
        submit.setActionCommand("changeDozent");
        submit.addActionListener(stundenplanGui);

	JButton delete = new JButton("Löschen");
        delete.setActionCommand("deleteDozent");
        delete.addActionListener(stundenplanGui);

	JButton create = new JButton("Neu");
        create.setActionCommand("createDozent");
        create.addActionListener(stundenplanGui);

		JPanel buttonPane = new JPanel();
		buttonPane.add(submit);
		buttonPane.add(delete);
		buttonPane.add(create);

        JPanel pane = new JPanel(new BorderLayout());

		pane.setBorder(BorderFactory.createCompoundBorder(BorderFactory
				.createEmptyBorder(5, 5, 5, 5), BorderFactory
				.createTitledBorder(
				BorderFactory.createLineBorder(Color.black), "Dozent")));
		pane.add(fieldsPane, BorderLayout.CENTER);
		pane.add(buttonPane, BorderLayout.SOUTH);

        return pane;
	}
 
LOL! "LayoutManager" ist nicht ein grafischer Layout-Editor, sondern eine Klasse, die für die Ausrichtung deiner Komponenten zuständig ist, hier z.B. SpringLayout und BorderLayout. Da ich mich mit ersterem nicht auskenne, kann ich dir damit leider nicht helfen, aber da wird sich schon noch ein Auskenner finden...
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben