JList verschiebt sich

  • Themenstarter Themenstarter Krassia
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
K

Krassia

Gast
Hi,



und zwar geht es darum, dass ich momentan eine Graphische Oberfläche mit dem GridBagLayout erstellen will.
Es hatte auch alles geklappt bis ich meine JList dem Panel hinzufügen wollte, diese wird anstatt links unten rechts oben angezeigt und ich weiss nicht wieso.
Um die JList habe ich ein JScrollPane gelegt und wenn ich die JScrollpane wegnehme, dann wird die JList an der richtigen stelle angezeigt. Also muss das in irgeneinem zusammenhang mit der JScrollPane liegen aber ich weiss woran das liegen kann und komme einfach nicht auf die Lösung.

Ich hoffe ich habe mein Problem einigermaßen verständlich erklärt und ihr könnt mir weiterhelfen
Vielen Dank schonmal im vorraus.

Code:
package Gui;

import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ButtonGroup;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.WindowConstants;

import org.jdesktop.swingx.JXList;

public class PMitarbeiter implements ActionListener {

	private JDialog dialog;
	private JPanel panel;
	private JRadioButton radioB1, radioB2;
	private ButtonGroup rmi;
	private JXList auswahlListe, hinzufügenListe;
	private JTextField suchEingabe;
	private JButton bHinzufügen, bEntfernen, bSpeichern;

	public PMitarbeiter() {

		init();

	}

	public void init() {

		createDialog();
		createRadioButton();
		createList();
		createTextField();
		createButton();
		createPanel();
		add();
		show();

	}

	public void createDialog() {

		dialog = new JDialog(dialog, "Mitarbeiter hinzufügen");

	}

	public void createRadioButton() {

		radioB1 = new JRadioButton("Vorname");
		radioB1.addActionListener(this);
		radioB2 = new JRadioButton("Nachname");
		radioB2.addActionListener(this);

		rmi = new ButtonGroup();

		rmi.add(radioB1);
		rmi.add(radioB2);

	}

	public void createList() {

		DefaultListModel listModel = new DefaultListModel();
		listModel.addElement("Debbie Scott");
		listModel.addElement("Scott Hommel");
		listModel.addElement("Alan Sommerer");
		listModel.addElement("Debbie Scott");
		listModel.addElement("Scott Hommel");
		listModel.addElement("Alan Sommerer");
		listModel.addElement("Debbie Scott");
		listModel.addElement("Scott Hommel");
		listModel.addElement("Alan Sommerer");
		listModel.addElement("Debbie Scott");
		listModel.addElement("Scott Hommel");
		listModel.addElement("Alan Sommerer");
		listModel.addElement("Debbie Scott");
		listModel.addElement("Scott Hommel");
		listModel.addElement("Alan Sommerer");
		listModel.addElement("Debbie Scott");
		listModel.addElement("Scott Hommel");
		listModel.addElement("Alan Sommerer");

		listModel.setSize(10);

		auswahlListe = new JXList(listModel);

		auswahlListe.setName("Ausgewählter Mitarbeiter");

		auswahlListe.setSize(5, 10);
		auswahlListe.setVisibleRowCount(3);

		hinzufügenListe = new JXList(new Object[] { "Kraus", "Klewes" });
		hinzufügenListe.setVisibleRowCount(8);
	}

	public void createTextField() {

		suchEingabe = new JTextField(10);

	}

	public void createButton() {

		bEntfernen = new JButton("<");
		bEntfernen.addActionListener(this);
		bHinzufügen = new JButton(">");
		bHinzufügen.addActionListener(this);
		bSpeichern = new JButton("Speichern");
		bSpeichern.addActionListener(this);
	}

	public void createPanel() {

		GridBagLayout gbl = new GridBagLayout();

		panel = new JPanel(gbl);

		GridBagConstraints gbc = new GridBagConstraints();

		// Festlegen, dass die GUI-Elemente die Gitterfelder in
		// waagerechter Richtung ausfüllen:
		gbc.fill = GridBagConstraints.HORIZONTAL;

		// Die Abständer der einzelnen GUI-Elemente zu den gedachten
		// Gitterlinien festgelegen:
		gbc.insets = new Insets(2, 2, 2, 2);

		// RadioButton "1" wird dem Panel zugewiesen (radioB1)
		gbc.gridx = 0; // x-Position im gedachten Gitter
		gbc.gridy = 0; // y-Positionb im gedachten Gitter
		gbc.gridheight = 1; // ein Gitter Feld hoch
		gbl.setConstraints(radioB1, gbc);
		panel.add(radioB1);

		// RadioButton "2" wird dem Panel zugewiesen (radioB1)
		gbc.gridx = 0;
		gbc.gridy = 1;
		gbc.gridheight = 1;
		gbl.setConstraints(radioB2, gbc);
		panel.add(radioB2);

		// TextField wird dem Panel zugewiesen (suchEingabe)
		gbc.gridx = 1 - 2;
		gbc.gridy = 1 - 2;
		gbc.gridheight = 2;
		gbl.setConstraints(suchEingabe, gbc);
		panel.add(suchEingabe);

		// Liste "1" wird dem Panel zugewiesen (auswahlListe)
		gbc.gridx = 0;
		gbc.gridy = 2 - 3;
		gbc.gridheight = 2;
		gbl.setConstraints(auswahlListe, gbc);
		// Um die Liste wird eine ScrollPane gelegt
		JScrollPane listScroller = new JScrollPane(auswahlListe);
		listScroller.setPreferredSize(new Dimension(150, 80));
		// panel.add(listScroller);
		panel.add(auswahlListe);

	}

	public void add() {

		dialog.add(panel);

	}

	public void show() {

		this.dialog.pack();

		this.dialog.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		this.dialog.setModal(true);
		this.dialog.setVisible(true);
		this.dialog.setLocationRelativeTo(null);

	}

	public void actionPerformed(ActionEvent e) {

	}

	public static void main(String[] args) {

		new PMitarbeiter();

	}

}


Mit freundlichen Grüßen
Krassia
 
Ohne mir den Rest angesehen zu haben, macht das schon keinen Sinn:
JScrollPane listScroller = new JScrollPane(auswahlListe);
listScroller.setPreferredSize(new Dimension(150, 80));
// panel.add(listScroller);
panel.add(auswahlListe);
Die ScrollPane muss dem Panel hinzugefügt werden, nicht die List.
 
Das ist schon klar deswegen steht genau das auch ausgeklammert genaus dadrüber und die Liste füge ich nur dem Panel zu um zu veranschaulichen, dass sie ohne die JScrollPane richtig angezeigt wird..
 
Das ist schon klar deswegen steht genau das auch ausgeklammert genaus dadrüber und die Liste füge ich nur dem Panel zu um zu veranschaulichen, dass sie ohne die JScrollPane richtig angezeigt wird..
 
org.jdesktop.swingx.JXList
habe ich hier im Forum noch nie gelesen,

wenn du ein breiteres Publikum ansprechen willst, dann verwende normale bekannte Komponenten,
im Titel des Topics sprichst du ja auch fälschlicherweise von JList..

in jedem Fall wäre es sinnvoll, zu prüfen, ob es mit JList ein ähnliches Verhalten gibt
 
Es verhält sich mit JList genauso.
Ich hatte geguckt, ob es sich mit JXList genauso verhält.
Wobei die funktionen von JList und JXList die gleichen sind mit dem unterschied, dass JXList noch einige zusatzfunktionen hat soweit ich weiss.
 
> gbl.setConstraints(auswahlListe, gbc);

ist wenig hilfreich, wenn du nicht auswahlListe sondern listScroller einfügst,
schreibe
gbl.setConstraints(listScroller, gbc);
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben