JList mit JScrollPane

Hallo,

ja ich weiß, das Thema ist oft diskutiert worden und ich habe auch schon lange im Netz gesucht und vieles probiert, aber es klappt nicht.

Ich übergebe mit

Java:
irgendEinPanel.add(new JScrollPane(irgendEineJList);

dann habe ich zwar ein ScrollBar, aber dieser ist undynamisch, er passt sich nicht dem Inhalt der JList an. Ich kann da ein wenig scrollen, aber eben nicht über den kompletten Inhalt.

???:L???:L???:L
 
ohne mehr code kann man nur ins blaue raten... meister fehler ist, das NullLayout - also nutz einen LayoutManager
 
code dazu:

Java:
public JPanel verschiebeWortZuBezhPanel() {
		JPanel hauptPanel = new JPanel();
		hauptPanel.setLayout(new BoxLayout(hauptPanel, BoxLayout.PAGE_AXIS));
		hauptPanel.setBorder(BorderFactory.createTitledBorder("Verschieben"));
		
		JPanel obenPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
		
		JLabel wortLabel = new JLabel("Wort eingeben: ");
		JTextField wortField = new JTextField();
		wortField.setPreferredSize(new Dimension(150, 25));
		JButton suchenButton = new JButton("Suchen");
		JList wortListe = new JList();
		wortListe.setPreferredSize(new Dimension(200,200));
		wortListe.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
		
		obenPanel.add(wortLabel);
		obenPanel.add(wortField);
		obenPanel.add(suchenButton);
		obenPanel.add(new JScrollPane(wortListe));
		
		JPanel mittePanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
		
		JButton verschiebeButton = new JButton("Verschieben");
		
		mittePanel.add(verschiebeButton);
		
		hauptPanel.add(obenPanel);
		hauptPanel.add(mittePanel);
		
		suchenButton.addActionListener(bearbeitenGL.wort1SuchenButtonAction(wortField, wortListe));
		verschiebeButton.addActionListener(bearbeitenGL.verschiebenButtonAction(wortListe));
		
		return hauptPanel;
	}
 
besser, aber nicht gut genug,
in allen Lebenslagen der Welt gilt immer eine Grundregel: poste ein vollständig laufendes Testprogramm,
ohne Benutzereingaben, Datei oder Datenbank, mit vorgegebenen Dummy-Werten,
kopieren, run, Fehler sehen, sonst geht gar nix

wobei:
> wortListe.setPreferredSize(new Dimension(200,200));
könnte das was ausmachen?
die Liste sollte so groß werden wie sie will, das ScrollPane kannst du ja begrenzen
 
Java:
import java.awt.Dimension;
import java.awt.FlowLayout;

import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;

import Geschäftslogik.BearbeitenDialog2GL;
import Model.Start;

/**
 * @author Administrator
 *
 */
public class BearbeitenDialog2 extends JDialog {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	BearbeitenDialog2GL bearbeitenGL = new BearbeitenDialog2GL();

	/**
	 * @param mainframe
	 */
	public BearbeitenDialog2(JFrame mainframe) {
		// TODO Auto-generated constructor stub
		new JDialog(Start.getInstance().getHauptWindow(), true);
		setTitle("Wört verschieben");
		setLocationByPlatform(true);
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		setSize(1024, 768);
		
		add(mainPanel());
		
		pack();
		setVisible(true);
	}
	
	public JPanel mainPanel() {
		JPanel hauptPanel = new JPanel();
		hauptPanel.setLayout(new BoxLayout(hauptPanel,BoxLayout.PAGE_AXIS));
		
		hauptPanel.add(hinweisPanel());
		hauptPanel.add(verschiebeWortZuBezhPanel());
		
		return hauptPanel;
	}
	
	public JPanel hinweisPanel() {
		JPanel hinweisPanel = new JPanel();
		hinweisPanel.setLayout(new BoxLayout(hinweisPanel, BoxLayout.LINE_AXIS));
		hinweisPanel.setBorder(BorderFactory.createTitledBorder("!Hinweis!"));
		
		JPanel textPanel = new JPanel(new FlowLayout(FlowLayout.LEFT,10,0));
		JLabel hinweisLabel = new JLabel("Geben Sie das gesuchte Wort ein, klicken Sie auf 'suchen',\n markieren Sie die gewünschten Wörter und klicken Sie 'Verschieben'!");
		textPanel.add(hinweisLabel);
		
		hinweisPanel.add(textPanel);
		
		return hinweisPanel;
	}
	
	public JPanel verschiebeWortZuBezhPanel() {
		JPanel hauptPanel = new JPanel();
		hauptPanel.setLayout(new BoxLayout(hauptPanel, BoxLayout.PAGE_AXIS));
		hauptPanel.setBorder(BorderFactory.createTitledBorder("Verschieben"));
		
		JPanel obenPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
		
		JLabel wortLabel = new JLabel("Wort eingeben: ");
		JTextField wortField = new JTextField();
		wortField.setPreferredSize(new Dimension(150, 25));
		JButton suchenButton = new JButton("Suchen");
		JList wortListe = new JList();
		wortListe.setPreferredSize(new Dimension(200,200));
		wortListe.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
		
		obenPanel.add(wortLabel);
		obenPanel.add(wortField);
		obenPanel.add(suchenButton);
		obenPanel.add(new JScrollPane(wortListe));
		
		JPanel mittePanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
		
		JButton verschiebeButton = new JButton("Verschieben");
		
		mittePanel.add(verschiebeButton);
		
		hauptPanel.add(obenPanel);
		hauptPanel.add(mittePanel);
		
		suchenButton.addActionListener(bearbeitenGL.wort1SuchenButtonAction(wortField, wortListe));
		verschiebeButton.addActionListener(bearbeitenGL.verschiebenButtonAction(wortListe));
		
		return hauptPanel;
	}
}
 
hast du die letzten hinzugefügten Zeilen meines vorherigen Postings gesehen?

ansonsten ist das neue Posting ohne viel Sinn, es fehlen ja immer noch große Teile des Programms, die Liste ist leer
(und nein, poste nicht tausende Zeilen Code, reduziere dein Problem auf ein Dummy-Testprogramm)


-----

nebenbei:

Java:
 public BearbeitenDialog2(JFrame mainframe) {
        new JDialog(Start.getInstance().getHauptWindow(), true);
eine Klasse die von Dialog erbt und in der new JDialog() steht, ist normalerweise nicht korrekt
bzw. enthält irgendwas überflüssiges, das sind zwei Dialoge

und wenn ein JFrame als Parameter übergeben wird, wieso wird dann noch irgendwo das 'HauptWindow' abgefragt?
 
Zuletzt bearbeitet von einem Moderator:

Neue Themen


Zurück
Oben