# Datei einlesen und Inhalt in JList (Tabbed Pane) anzeigen?



## anton_23 (2. Mai 2005)

Hi Leute!

Ich will eine Datei enlesen und den Inhalt in einer JList darstellen lassen. Über die Konsole bekomme ich die Ausgabe hin, aber irgendwie nicht in der JList???

Wo ist der Fehler???

```
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;

class SwingFenster extends JFrame implements ActionListener
{
	//Variablendeklaration
	private	JTabbedPane tabbedPane;
	private	JPanel panel1;
	private	JPanel panel2;
	private	JPanel panel3;
	private	JPanel panel4;
	private	JPanel panel5;
	private	JPanel panel6;
	private	JPanel panel7;
	private	JPanel panel8;
	private JMenu menu_Datei;
	private JMenu menu_About;
	private JMenuItem menuItem_NeueDatei;
	private JMenuItem menuItem_DateiOeffnen;
	private JMenuItem menuItem_Speichern;
	private JMenuItem menuItem_SpeichernUnter;
	private JMenuItem menuItem_Drucken;
	private JMenuItem menuItem_Beenden;
	private JMenuItem menuItem_Hilfe;
	private JMenuItem menuItem_Version;
	private JFrame f;
	private JTextArea ta;
	JList liste;					
	Vector item = new Vector();	 
JList liste1;
	//Konstruktor
	public SwingFenster()
	{	
		//Look & Feel einstellen
		try 
      	{ 
         	UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");  
      	} 
      	catch(Exception ex) 
      	{ 
         	System.out.println("Fehler bei l&f " + ex.getMessage()); 
      	} 
		
		JMenuBar menuBar;
		JMenu menu;
		JMenuItem menuItem;
		
		
		
		//Erstellen der JMenuBar.
		menuBar = new JMenuBar();
		setJMenuBar(menuBar);
		
		//Erstellen des JMenues "Datei"
		menu_Datei = new JMenu("Datei");
		menuBar.add(menu_Datei);

		//Gruppe der JMenuItems des JMenues "Datei"
		menuItem_NeueDatei = new JMenuItem("Neue Datei");
		menu_Datei.add(menuItem_NeueDatei);
		menuItem_DateiOeffnen = new JMenuItem("Datei öffnen"); 
		menu_Datei.add(menuItem_DateiOeffnen);
		menu_Datei.addSeparator();
		menuItem_Speichern = new JMenuItem("Speichern"); 
		menu_Datei.add(menuItem_Speichern);
		menuItem_SpeichernUnter = new JMenuItem("Speichern unter"); 
		menu_Datei.add(menuItem_SpeichernUnter);
		menu_Datei.addSeparator();
		menuItem_Drucken = new JMenuItem("Drucken"); 
		menu_Datei.add(menuItem_Drucken);
		menuItem_Beenden = new JMenuItem("Beenden"); 
		menu_Datei.add(menuItem_Beenden);

		//Erstellen des JMenues "About"
		menu_About = new JMenu("About");
		menuBar.add(menu_About);
		
		//Gruppe der JMenuItems des JMenues "Hilfe"
		menuItem_Hilfe = new JMenuItem("Hilfe"); 
		menu_About.add(menuItem_Hilfe);
		menu_About.addSeparator();
		menuItem_Version = new JMenuItem("Version"); 
		menu_About.add(menuItem_Version);
		

		setTitle("Tabbed Pane Application");
		setSize(300, 200);
		

		JPanel topPanel = new JPanel();
		topPanel.setLayout(new BorderLayout());
		getContentPane().add(topPanel);

		// Create the tab pages
		createPage1();
		createPage2();
		createPage3();
		createPage4();
		createPage5();
		createPage6();
		createPage7();
		createPage8();

		// Create a tabbed pane
		tabbedPane = new JTabbedPane();
		tabbedPane.addTab("ABC", createPage1());
		tabbedPane.addTab("DEF", createPage2());
		tabbedPane.addTab("GHI", createPage3());
		tabbedPane.addTab("JKL", createPage4());
		tabbedPane.addTab("MNO", createPage5());
		tabbedPane.addTab("PQR", createPage6());
		tabbedPane.addTab("STU", createPage7());
		tabbedPane.addTab("VWXYZ", createPage8());
		topPanel.add(tabbedPane, BorderLayout.CENTER);
		
		menuItem_NeueDatei.addActionListener(this);
		menuItem_DateiOeffnen.addActionListener(this);
		menuItem_Speichern.addActionListener(this);
		menuItem_SpeichernUnter.addActionListener(this);
		menuItem_Drucken.addActionListener(this);
		menuItem_Beenden.addActionListener(this);
		menuItem_Hilfe.addActionListener(this);
		menuItem_Version.addActionListener(this); 
		
		f = new JFrame();
    	//f.setLayout(new BorderLayout());
    	
    	ta = new JTextArea();
    	//f.add(BorderLayout.CENTER, ta);
    	
    
		
	}//Ende Konstruktor

	JPanel createPage1()
	{
		JList liste1;
    	JPanel panel;

    	JScrollPane scroll;
    	String[] item;

    	panel = new JPanel();
    	panel.setLayout(new BorderLayout());

    	item = new String[20];
    	for (int i=0; i<20; i++) {
      	item[i] = Integer.toHexString(i+1)+" Auswahl";
    	}

    	liste1 = new JList(item);
       	// Geniere eine Scrollbox, Inhalt Liste
    	scroll = new JScrollPane(liste1);
    	panel.add(scroll, BorderLayout.CENTER);
    	return panel;
	}
		
	JPanel createPage2()
	{
		JList liste;
    	JPanel panel;
    	
    	JScrollPane scroll;
    	String[] items;

    	panel = new JPanel();
    	panel.setLayout(new BorderLayout());

    	items = new String[20];
    	for (int i=0; i<20; i++) {
      	items[i] = Integer.toHexString(i+1)+" Auswahl";
    	}

    	liste = new JList(items);
       	// Geniere eine Scrollbox, Inhalt Liste
    	scroll = new JScrollPane(liste);
    	panel.add(scroll, BorderLayout.CENTER);
    	return panel;
	}
		
	JPanel createPage3()
	{
		JList liste;
    	JPanel panel;

    	JScrollPane scroll;
    	String[] items;

    	panel = new JPanel();
    	panel.setLayout(new BorderLayout());

    	items = new String[30];
    	for (int i=0; i<30; i++) {
      	items[i] = Integer.toHexString(i+1)+" Auswahl";
   		}

    	liste = new JList(items);
       	// Geniere eine Scrollbox, Inhalt Liste
    	scroll = new JScrollPane(liste);
    	panel.add(scroll, BorderLayout.CENTER);
    	return panel;
	}
		
	JPanel createPage4()
	{
		JList liste;
    	JPanel panel;

    	JScrollPane scroll;
    	String[] items;

    	panel = new JPanel();
    	panel.setLayout(new BorderLayout());

    	items = new String[40];
    	for (int i=0; i<40; i++) {
      	items[i] = Integer.toHexString(i+1)+" Auswahl";
    	}

    	liste = new JList(items);
       	// Geniere eine Scrollbox, Inhalt Liste
    	scroll = new JScrollPane(liste);
    	panel.add(scroll, BorderLayout.CENTER);
    	return panel;
	}
		
	JPanel createPage5()
	{
		JList liste;
    	JPanel panel;

    	JScrollPane scroll;
    	String[] items;

    	panel = new JPanel();
    	panel.setLayout(new BorderLayout());

    	items = new String[50];
    	for (int i=0; i<50; i++) {
      	items[i] = Integer.toHexString(i+1)+" Auswahl";
    	}

    	liste = new JList(items);
       	// Geniere eine Scrollbox, Inhalt Liste
    	scroll = new JScrollPane(liste);
    	panel.add(scroll, BorderLayout.CENTER);
    	return panel;
	}
		
	JPanel createPage6()
	{
		JList liste;
    	JPanel panel;

    	JScrollPane scroll;
    	String[] items;

    	panel = new JPanel();
    	panel.setLayout(new BorderLayout());

    	items = new String[60];
    	for (int i=0; i<60; i++) {
      	items[i] = Integer.toHexString(i+1)+" Auswahl";
    	}

    	liste = new JList(items);
       	// Geniere eine Scrollbox, Inhalt Liste
    	scroll = new JScrollPane(liste);
    	panel.add(scroll, BorderLayout.CENTER);
    	return panel;
	}
		
	JPanel createPage7()
	{
		JList liste;
    	JPanel panel;

    	JScrollPane scroll;
    	String[] items;

    	panel = new JPanel();
    	panel.setLayout(new BorderLayout());

    	items = new String[70];
    	for (int i=0; i<70; i++) {
      	items[i] = Integer.toHexString(i+1)+" Auswahl";
   		}

    	liste = new JList(items);
       	// Geniere eine Scrollbox, Inhalt Liste
    	scroll = new JScrollPane(liste);
    	panel.add(scroll, BorderLayout.CENTER);
    	return panel;
	}
		
	JPanel createPage8()
	{
		JList liste;
    	JPanel panel;

    	JScrollPane scroll;
    	String[] items;

    	panel = new JPanel();
    	panel.setLayout(new BorderLayout());

    	items = new String[80];
    	for (int i=0; i<80; i++) {
      	items[i] = Integer.toHexString(i+1)+" Auswahl";
    	}

    	liste = new JList(items);
       	// Geniere eine Scrollbox, Inhalt Liste
    	scroll = new JScrollPane(liste);
    	panel.add(scroll, BorderLayout.CENTER);
    	return panel;
	}
		

   	
       
      public void actionPerformed(ActionEvent ev) 
       { 
          String   quelle=ev.getActionCommand(); 
           
          if(quelle.equals("Neue Datei")) 
           { 
              	System.out.println("Neue Datei"); 
           } 
           
           else if(quelle.equals("Datei öffnen"))
           {
           		 
  				
    				FileDialog dLoad = new FileDialog(f, "Datei öffnen");
    				dLoad.show();   // blockiert bis Auswahl erfolgt ist
    				String datei = dLoad.getFile();
    				String verz  = dLoad.getDirectory();
    				if( datei != null )
    				{
      					String name = verz + datei;
      					f.setTitle("SimpleEdit 1.0: " + name);

      					try
      					{
        					BufferedReader br = new BufferedReader(
          					new FileReader(name));

        					StringBuffer inhalt = new StringBuffer();
        					String line;

        					while((line = br.readLine()) != null)
          					inhalt.append(line).append("\n");
							System.out.println(inhalt.toString());
        					item.add(inhalt.toString());
        					this.liste1.setListData(item);
      					}
      					catch( Exception ex)
      					{ 
      						ta.setText(ex.getClass().getName() + " " + ex.getMessage()); 
      					}
    				}
  			}
           
           else if(quelle.equals("Speichern"))
           {
           		System.out.println("Speichern");
           }
           
           else if(quelle.equals("Speichern unter"))
           {
           		FileDialog dSave = new FileDialog(f, "Datei speichern", FileDialog.SAVE);
    			dSave.show();   // blockiert bis Auswahl erfolgt ist
    			String datei = dSave.getFile();
    			String verz  = dSave.getDirectory();
    			if(datei != null)
    			{
      				String name = verz + datei;
      				f.setTitle("SimpleEdit 1.0: " + name);

      				try
      				{
        				PrintWriter pw = new PrintWriter(
          				new FileWriter(name));

        				pw.print(ta.getText());
        				pw.close();
      				}
      				catch(Exception ex)
      				{ 
      					ta.setText(ex.getClass().getName() + " " + ex.getMessage()); 
      				}
           		}
           
           else if(quelle.equals("Drucken"))
           {
           		System.out.println("Drucken");
           }
           
           else if(quelle.equals("Beenden"))
           {
           		System.exit( 0 );
           }
           
           else if(quelle.equals("Hilfe"))
           {
           		System.out.println("Hilfe");
           }
           
           else if(quelle.equals("Version"))
           {
           		System.out.println("Version");
           }
		}
	}
}
```


----------



## mic_checker (2. Mai 2005)

Du liest die Datei ein und willst sie in liste1 anzeigen, auf den einzelnen Tabs des JTabbedPane stellst du aber andere Listen dar.

Somit kann es gar nicht dargestellt werden.


----------



## anton_23 (2. Mai 2005)

Meinst die Hochzählungen auf den JTabbedPanes??? Die habe ich auch schon rausgenommen, funzt aber irgendwie auch nicht. Habe gerade total die Bloackade, bin allerding auch kein JAVA-Profi, eher Beginner bzw. fürs Studium ist das halt notwendig. 

Kannst Du mir mit ner kleinen Beschreibung weiterhelfen?!!!

Sorry für den doppelten Thread, habe erst im nachinein gemerkt, das ich in der falschen Rubrik eingestellt habe!


----------



## mic_checker (2. Mai 2005)

Also das Problem ist ja folgendes:

Du willst den eingelesenen Inhalt an die Liste übergeben, setzt dafür liste1 entsprechend. Allerdings wird deine liste nirgendwo in einem JTabbedPane angezeigt so dass sich die Änderungen nicht bemerkbar machen.

Du könntest z.B. ein Array von JList anlegen - dann in den create Methoden entsprechend die Objekte erzeugen. Je nachdem in welchem Tab du es darstellen willst kannst du es dann über Index der jeweiligen Liste zuweisen.

Hoffe du verstehst was ich meine.


----------



## anton_23 (2. Mai 2005)

Nee, nich wirklich!!!


----------



## mic_checker (2. Mai 2005)

Anstatt oben liste1 und liste zu deklarieren und einzeln in den create Methoden nochmal die Listen könntest du ein Array von JList machen, das groß genug ist um in jedes JTabbedPane eine Liste zu setzen.

Dann in den create Methoden jeweils die Listen erzeugen, also im ersten Tab Liste an Stelle 0 im Array erzeugen etc. pp. So machst du das in jeder create Methode....

Beim Datei öffnen musst du dann gucken in welchem Tab du das anzeigen willst, wählst den entsprechenden Index im Array aus und setzt entsprechend den Inhalt dieser Liste.


----------



## anton_23 (2. Mai 2005)

Ich raffs einfach nett!

Kannst Du mal nen Code Beispiel posten!!!

THX

Anton_23


----------



## mic_checker (3. Mai 2005)

wo hakt es denn ? also was verstehst du nicht?


----------



## anton_23 (3. Mai 2005)

o.k. Du sprichst sprichst für mich diegleiche Sprache wie mein Programm. Ich habe echt keinen Plan von Java undmuss bisnächste Woche Montag mein Code fertig haben, egal wie. Bin momenatan aber irgendwie auch nicht mehr aufnahmefähig (Fatal Error auf Layer8)!

Gib mir doch bitte mal nen Code womit ich vielleicht was anfangen kann!

Würde mich freuen!!!

Thanks

Anton_23


----------



## mic_checker (3. Mai 2005)

Arrays sind dir ein Begriff?

1) Wie deklariert man ein Array mit 8 Elementen - vom Typ JList?

```
JList[] deineListe = new JList[8];
```
2) Wie kannst du vom Index 0 bis 7 in diesem Array je eine neue JList erzeugen ?


3)

```
this.liste1.setListData(item);
```
Wenn du das hast kannst du z.B. die 1.Liste das ganze anzeigen lassen:


```
deineListe[0].setListData(item);
```

Punkt 2 musst du selber rausfinden - du solltest dich etwas genauer mit der Sprache befassen - schau dir z.B. mal das Javabuch an (www.javabuch.de)


----------



## anton_23 (3. Mai 2005)

Mal schauen, ich dank Di erstmal für Deine Bemühungen!!!

THX

Anton_23


----------



## anton_23 (4. Mai 2005)

@mic checker

Thanks!


----------

