JSplitPane und JList aktualisieren

Status
Nicht offen für weitere Antworten.

mathon

Bekanntes Mitglied
Hallo,

Ich habe einen JFrame, der zunächst durch eine horizontale JSplitPane in zwei Hälften geteilt wird. Dann habe ich für den rechten Teil noch eine vertikale JSplitPane, in dem oberen rechten Teil habe ich dann ein JPanel in dem sich mit Hilfe eines GridLayouts (1,3) drei Jlists in diesem JPanel.

Ich kann jetzt in dem Menü einen Punkt auswählen wodurch ein JFileChooser geöffnet wird und man kann da dann Files auswählen und nach Bestätigen sollen die Informationen (Strings) in den JLists angezeigt werden.

Nur wie kann ich die JLists updaten, nachdem der JFileChooser geschlossen wurde, damit die Informationen angezeigt werden...?

lg matti
 

André B.

Bekanntes Mitglied
Du teilst der JList einfach ein Model zu, mit welchem zu die Einträge manipulieren kannst. Das könnte in etwa so aussehen:
Code:
DefaultListModel model = new DefaultListModel();
JList list = new JList(model);
model.addElement("Blubb");
(hab das jetzt nicht getestet, sonder einfach nur hier reingeschrieben. soll heissen, da können schreibfehler drin sein)
 

mathon

Bekanntes Mitglied
Also ich habe das jetzt probiert, also im Konstruktor zu jeder JList auch ein DefaultListModel Objekt erstellt und dem Konstruktor der JList-Objekte als Parameter übergeben.

in einer Methode wo dann die JList's gefüllt werden habe ich einfach dann mit der addElement methode dem DefaultListModel die Strings übergeben. aber wenn der JFileChooser dann geschlossen ist, wird trotzdem in den JLists nichts angezeigt..?? :(

matti
 

mathon

Bekanntes Mitglied
also mir ist echt nicht klar, warum er die JLists nicht aktualisiert, da ich ja jetzt ein DefaultListModel verwende..hmm...komisch..:(


Hier ist der gesamte Code der TestKlasse:

Code:
public class JSplitPaneTest extends JFrame implements ActionListener 
{
	private Vector v_titles;
	private Vector v_artist;
	private Vector v_genre;
    private JLabel rightBottom;
    private JList list;
    private JList l_titles;
    private DefaultListModel m_titles;
    private JList l_artist;
    private DefaultListModel m_artist;
    private JList l_genre;
    private DefaultListModel m_genre;
    private JSplitPane splitPane;
    private JSplitPane splitPaneLeft;
    private JSplitPane splitPaneRight;
    private JLabel leftBottom;
    private JPanel top;
    private JLabel topLeft;
    private JLabel topMiddle;
    private JLabel topRight;
    private JScrollPane scroll_topLeft;
    private JScrollPane scroll_topMiddle;
    private JScrollPane scroll_topRight;
    private JScrollPane scroll_rightBottom;
    private JMenuBar menuBar;
    private JMenu menuFile;
    private JMenuItem menuAddFolder;
    private JMenuItem menuFileExit;
    private static final long serialVersionUID = 01;

    public JSplitPaneTest() 
    {
        initComponents();
    }
    
    private void initComponents()
    {
    	
    	this.setTitle("JSplitPaneProject_Achatschitz Patrick[3961]");
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        
        menuBar = new JMenuBar();
    	menuFile = new JMenu( "File" );
		menuFileExit = new JMenuItem("Exit");
		menuFileExit.addActionListener(this);
		menuFile.add(menuFileExit);
		menuAddFolder = new JMenuItem("Add Folder");
		menuAddFolder.addActionListener(this);
		menuFile.add(menuAddFolder);
		menuBar.add( menuFile );
		this.setJMenuBar(menuBar);
		
        //Create the list of images and put it in a scroll pane.
        list = new JList();
        list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    
        JScrollPane listScrollPane = new JScrollPane(list);   
        Dimension minimumSize = new Dimension(100, 50);
        listScrollPane.setMinimumSize(minimumSize);
        
        m_titles = new DefaultListModel();
        l_titles = new JList(m_titles);
        list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        
        m_artist = new DefaultListModel();
        l_artist = new JList(m_artist);
        list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        
        m_genre = new DefaultListModel();
        l_genre = new JList(m_genre);
        list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);      
        
        //Set up the picture label and put it in a scroll pane.
       
       
        scroll_rightBottom = new JScrollPane(rightBottom);
        scroll_rightBottom.setMinimumSize(minimumSize);
        
        top = new JPanel(new GridLayout(1,3));
        top.setMinimumSize(minimumSize);
             
        l_titles = new JList();
        Border border = LineBorder.createGrayLineBorder();
        l_titles.setBorder(border);
        scroll_topLeft = new JScrollPane(l_titles);
        l_artist = new JList();
        l_artist.setBorder(border);
        scroll_topMiddle = new JScrollPane(l_artist);
        l_genre = new JList();
        l_genre.setBorder(border);
        scroll_topRight = new JScrollPane(l_genre);
        top.add(scroll_topLeft);
        top.add(scroll_topMiddle);
        top.add(scroll_topRight);
        
        leftBottom = new JLabel("Area Left Bottom!!");
        leftBottom.setMinimumSize(minimumSize);
        leftBottom.setHorizontalAlignment(SwingConstants.CENTER);
        
        splitPaneLeft = new JSplitPane(JSplitPane.VERTICAL_SPLIT, listScrollPane, leftBottom);
        splitPaneLeft.setDividerLocation(400);
        splitPaneRight = new JSplitPane(JSplitPane.VERTICAL_SPLIT, top, scroll_rightBottom);
        splitPaneRight.setDividerLocation(320);
        //Create a split pane with the two scroll panes in it.
        splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, splitPaneLeft, splitPaneRight);
        splitPane.setOneTouchExpandable(true);
        splitPane.setDividerLocation(200);
        //Provide a preferred size for the split pane.
        splitPane.setPreferredSize(new Dimension(1000, 600));
        
      
        this.getContentPane().add(splitPane);
        this.pack();
    }

    //actionPerformed method for the Exit menu entry
    public void actionPerformed(ActionEvent e) 
    {
    	if(e.getActionCommand().equals("Exit"))
    	{
    		System.exit(1);
    	}
    	else if(e.getActionCommand().equals("Add Folder"))
    	{
    		JFileChooser chooser = new JFileChooser();
    	      chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
    	      int result = chooser.showDialog(this, "Choose Directory"); 
    	      switch(result) {
    	         case JFileChooser.APPROVE_OPTION:
    	        	 listDir(chooser.getSelectedFile());
    	      } 
    	}
    }
   
    public void listDir(File dir) 
    {

    	   File[] files = dir.listFiles();
    	   v_titles = new Vector();
    	   v_artist = new Vector();
    	   v_genre = new Vector();
    	   if (files != null) {
    	      for (int i = 0; i < files.length; i++) {	         
    	         if (files[i].isDirectory()) 
    	         {
    	            listDir(files[i]);
    	            }
    	         else 
    	         {
    	        	if(files[i].getName().endsWith(".mp3"))
    	        	{
    	            	
    	            	try
    	            	{
    	            		
    	            		MP3File file = new MP3File(files[i].getAbsolutePath());
    	            		if(file.getName() != null)
    	            			m_titles.addElement(file.getName());
    	            		else
    	            			m_titles.addElement(new String(""));
    	            		
    	            		if(file.getArtist() != null)
    	            			m_artist.addElement(file.getArtist());
    	            		else
    	            			m_artist.addElement(new String(""));
    	            		
    	            		if(file.getGenre() != null)
    	            			m_genre.addElement(file.getGenre());
    	            		else
    	            			m_genre.addElement(new String(""));
    	                  
    	            	}
    	            	catch(Exception ex)
    	            	{
    	            		ex.printStackTrace();
    	            	}
    	        	}
    	         }
    	      }
    	   }
    	}

    public static void main(String[] args) 
    {
    
    	new JSplitPaneTest().setVisible(true);
    }
}

weiß von euch jemand, was hier der fehler ist? :(

matti
 

André B.

Bekanntes Mitglied
Mal davon abgesehen, dass ich das nicht richtig testen kann, weil mir die MP3File Klasse fehlt, sieht man in der Methode initComponents(), dass du zuerst die JLists mit den Models instanzierst und etwas später nochmal ohne die, d.h. du manipulierst das Model von einer JList, die nicht mehr existiert. Warum es allerdings bei dir ohne die Models nicht funktioniert hat, ist mir nicht klar :autsch:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H JTable im JSplitPane darstellen AWT, Swing, JavaFX & SWT 2
L JSplitPane Divider Location beim Maximieren AWT, Swing, JavaFX & SWT 6
M Buttons in JSplitPane hinzufügen AWT, Swing, JavaFX & SWT 6
L JSplitPane - auf Änderung reagieren AWT, Swing, JavaFX & SWT 4
D JSplitPane lässt sich nicht verschieben AWT, Swing, JavaFX & SWT 3
M Swing JSplitPane beide Seiten fixieren AWT, Swing, JavaFX & SWT 2
U Swing JPane und JScrollpane in JSplitpane-Seite: Scrollen funktioniert nicht AWT, Swing, JavaFX & SWT 3
D JSplitPane, Jtree, CardLayout (constraint must be a string) AWT, Swing, JavaFX & SWT 9
D JSplitPane -> setRightComponent aus anderer Klasse AWT, Swing, JavaFX & SWT 3
B JSplitPane AWT, Swing, JavaFX & SWT 4
J Swing Problem - Abspeichern JSplitPane Position AWT, Swing, JavaFX & SWT 5
Burny91 Swing Vertical JSplitPane lässt sich nicht nach rechts verschieben AWT, Swing, JavaFX & SWT 2
C JSplitPane Divider fixieren AWT, Swing, JavaFX & SWT 2
S JSplitpane in BorderLayout nutzen AWT, Swing, JavaFX & SWT 4
S JSplitPane rechtes JPanel aus subpanel ändern AWT, Swing, JavaFX & SWT 3
G JSplitPane DividerLocation AWT, Swing, JavaFX & SWT 2
P Swing JSplitPane mehrere Teiler AWT, Swing, JavaFX & SWT 3
W JSplitPane wegräumen AWT, Swing, JavaFX & SWT 5
T Swing JSplitPane Componenten ausrichten AWT, Swing, JavaFX & SWT 4
T Expand/Collape JSplitPane programmatically AWT, Swing, JavaFX & SWT 3
B JSplitPane mit max. Größe AWT, Swing, JavaFX & SWT 8
T Swing JSplitPane erstellen AWT, Swing, JavaFX & SWT 2
R JSplitPane automatisch ausblenden AWT, Swing, JavaFX & SWT 13
H Swing Darstellungsproblem JPanel in JPanel in JScrollpane in JSplitPane AWT, Swing, JavaFX & SWT 4
multiholle JSplitPane und MousListener AWT, Swing, JavaFX & SWT 8
S JSplitPane ändert Farbe nicht AWT, Swing, JavaFX & SWT 4
M JSplitPane Tabelle neu zeichnen AWT, Swing, JavaFX & SWT 3
G JSplitPane nur in eine richtung? AWT, Swing, JavaFX & SWT 3
T Probleme mit JSplitPane, JScrollPane, JTree AWT, Swing, JavaFX & SWT 3
G JSplitPane unf JTable automatisch anpassen AWT, Swing, JavaFX & SWT 2
H Look & Feel und JSplitPane Problem AWT, Swing, JavaFX & SWT 17
J JSplitpane separator soll nicht seine Position veraendern? AWT, Swing, JavaFX & SWT 3
J Border bei JSplitPane entfernen? AWT, Swing, JavaFX & SWT 2
A JSplitPane in JInternalFrame AWT, Swing, JavaFX & SWT 2
M JSplitPane ein JPanel hinzufügen und zentrieren. AWT, Swing, JavaFX & SWT 9
S JSplitPane mit einer Grenze AWT, Swing, JavaFX & SWT 4
T Probleme mit JSplitPane AWT, Swing, JavaFX & SWT 4
DeeDee0815 JSplitPane.expandTopLeftRightOrBottomComponent(); AWT, Swing, JavaFX & SWT 2
C JSplitPane automatische Veränderung verbieten. AWT, Swing, JavaFX & SWT 3
O JSplitPane und JTabbedPane AWT, Swing, JavaFX & SWT 8
G JSplitPane - setOneTouchExpandable AWT, Swing, JavaFX & SWT 3
N JSplitPane soll JFrame resizen AWT, Swing, JavaFX & SWT 4
S Eine Art JInternalFrame in JSplitPane AWT, Swing, JavaFX & SWT 3
S SWT <=> JSplitPane AWT, Swing, JavaFX & SWT 4
M Ansichtswechsel in JSplitPane AWT, Swing, JavaFX & SWT 2
S JDesktopPane mit JSplitPane und JTree AWT, Swing, JavaFX & SWT 3
H JSplitPane lässt sich nicht über rechtes Panel ziehen AWT, Swing, JavaFX & SWT 2
T 3-teiliges JSplitPane AWT, Swing, JavaFX & SWT 13
B BorderLayout/JSplitPane Problem beim Ausrichten AWT, Swing, JavaFX & SWT 5
B Component in JSplitPane aktualisieren AWT, Swing, JavaFX & SWT 2
J JSplitPane reagiert nicht auf SetDeviderLocation() AWT, Swing, JavaFX & SWT 2
J JSplitPane Felder ansprechen AWT, Swing, JavaFX & SWT 3
C JSplitPane / JTabbedPane Größe AWT, Swing, JavaFX & SWT 3
M JSplitPane Divider setzen? AWT, Swing, JavaFX & SWT 3
G Weiches automatisches verschieben eines JSplitPane-Dividers? AWT, Swing, JavaFX & SWT 3
T JSplitPane immer gleich groß machen AWT, Swing, JavaFX & SWT 3
A problem mit update nach event, JSplitpane spinnt AWT, Swing, JavaFX & SWT 2
D Probleme bei JSplitPane mit JScrollPanes und Panels. AWT, Swing, JavaFX & SWT 4
R JSplitPane problem AWT, Swing, JavaFX & SWT 3
R JSplitPane setRightComponent AWT, Swing, JavaFX & SWT 2
O JSplitpane . AWT, Swing, JavaFX & SWT 9
R JSplitPane (linke und rechte Seite) AWT, Swing, JavaFX & SWT 4
T JSplitPane & JTable AWT, Swing, JavaFX & SWT 4
M JSplitPane Listener AWT, Swing, JavaFX & SWT 2
V JTable in JSplitPane? Wie AWT, Swing, JavaFX & SWT 2
G JList, einzelne Strings hinzufügen AWT, Swing, JavaFX & SWT 9
B Jlist füllen AWT, Swing, JavaFX & SWT 4
H JList.setEnabled(false) - Text soll nicht grau sein AWT, Swing, JavaFX & SWT 2
BananenBrötchen Swing Arraylist in jList anzeigen AWT, Swing, JavaFX & SWT 6
J Swing JList wird nicht angezeigt AWT, Swing, JavaFX & SWT 6
A Swing JList zu JTree AWT, Swing, JavaFX & SWT 11
G Eingabe in JTextField in Array speichern und in JList ausgeben AWT, Swing, JavaFX & SWT 7
cezary Choice, JComboBox oder JList AWT, Swing, JavaFX & SWT 5
J JList scrollen AWT, Swing, JavaFX & SWT 3
Neumi5694 Swing JList - Klick abfangen AWT, Swing, JavaFX & SWT 3
G Swing Swing Binding JList funktioniert nicht AWT, Swing, JavaFX & SWT 5
M Swing JList Auswahl-GUI-Konzept AWT, Swing, JavaFX & SWT 9
C JList: Bestimmte Objekte ausschließen AWT, Swing, JavaFX & SWT 1
F JList aktualisiert nicht AWT, Swing, JavaFX & SWT 24
F JList auffüllen aus Array von Instanzen AWT, Swing, JavaFX & SWT 4
F Event wenn Maus eine JList verlässt AWT, Swing, JavaFX & SWT 13
F JList bei Windowbuilder AWT, Swing, JavaFX & SWT 8
F JList zeigt keine Einträge mehr AWT, Swing, JavaFX & SWT 1
P JList erstellen AWT, Swing, JavaFX & SWT 4
G DefaultListModel für JList AWT, Swing, JavaFX & SWT 2
P Einer JList mit eigenem ListModel einen Eintrag hinzfügen AWT, Swing, JavaFX & SWT 5
P Übergeben von ListModel an nichtparametrisierte JList AWT, Swing, JavaFX & SWT 8
M Ein Element in mehreren JList selektieren AWT, Swing, JavaFX & SWT 5
J Swing Probleme mit ListSelectionListener(), Inhalte der JList werden gelöscht? AWT, Swing, JavaFX & SWT 6
Z Swing Variable eines Objekt aus Hashmap in JList anzeigen AWT, Swing, JavaFX & SWT 1
Nabbit Über JList kein JPopupMenu AWT, Swing, JavaFX & SWT 2
O Swing JList beim Klicken in der GUI erstellen AWT, Swing, JavaFX & SWT 6
C Swing JList zeigt keine neuen Einträge an AWT, Swing, JavaFX & SWT 1
B Swing Auf JList-Elemente aus einer anderen Klasse zugreifen AWT, Swing, JavaFX & SWT 1
T Generische Klasse in JList über DefaultListModel AWT, Swing, JavaFX & SWT 1
T Swing WindowBuilder: JList wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
C Button Text in JList neue Zeile AWT, Swing, JavaFX & SWT 6
C Hilfe bei JSpinner und JList AWT, Swing, JavaFX & SWT 1
D Swing ArrayList in Jlist/ List oder Array in JList/List AWT, Swing, JavaFX & SWT 5
S JList ist leer, aber DefaultListModel hat die Daten? AWT, Swing, JavaFX & SWT 9

Ähnliche Java Themen


Oben