ArrayList in 2D Array umfüllen

mavinatic

Bekanntes Mitglied
Hallo Ihrs, ich bin neu hier im Forum, weil ich eure Hilfe brauche^^ :p

Ich bin dabei ein Email Client zu programmieren, nun lese ich die Mails von dem Server und speichere sie in einer ArrayList<Mail>. Um die nun mit Java-Swing sichtbar zumachen wollte ich..."Betreff","Absender" & "SendeDatum" in dieser Tabelle anzeigen lassen.

Meine JTable besteht aus einmal dem Array > String[] columns = {Subject....} usw. und das 2. Array muss mit den Daten befüllt werden nämlich das String[][] rowData - Array.
Ich sitze schon Tage daran von der ArrayList<Mail> mit den methoden das in das 2D Array zu verfrachten, scheitere aber immer wieder daran, deshalb bitte ich euch um hilfe :)

GetMail.java:
Java:
package Data;

import java.util.ArrayList;
import java.util.Properties;

import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.NoSuchProviderException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.internet.ContentType;

public class GetMail 
{	
	public void GetMail(final Properties props) throws Exception
	{
		Session session = Session.getInstance( props, new javax.mail.Authenticator() 
		{ 
	          @Override protected PasswordAuthentication getPasswordAuthentication() 
	          { 
	            return new PasswordAuthentication( props.getProperty( "mail.pop3.user" ), props.getProperty( "mail.pop3.password" ) ); 
	          } 
	     } ); 
		
		Store store = session.getStore("pop3");
		store.connect();
		
		session.setDebug(true);
		
		Folder folder = store.getFolder("INBOX");
		folder.open( Folder.READ_ONLY );
		
		Message message[] = folder.getMessages();
		
		ArrayList<Mail> arrList = new ArrayList<Mail>();
		Mail me = null;
		
		
		for (int i=0; i<message.length; i++)
		{
			Message m = message[i];
			
			me = new Mail();
			me.setSubject(m.getSubject());
			me.setFrom(m.getFrom().toString());
			me.setDate(m.getSentDate().toString());			
			
			arrList.add(me);
		}
		
		
		
		for (int j=0; j<=arrList.size(); j++)
		{
                          //Hier String[][]rowData einfügen...

			System.out.println(arrList.get(j).getSubject() + " " + arrList.get(j).getFrom() + " " + arrList.get(j).getDate());

		}
		
		
		folder.close(false);
		store.close();
		
		
	}
		
}
 

Michael...

Top Contributor
Grundsätzlich in etwa wie folgt. Wenn Du das aber nur wegen der JTable machst, solltest Du Dir vielleicht überlegen ein eigenes TableModel zu schreiben, welches mit der ArrayList umgehen kann.
Java:
String[][] data = new String[arrList.size()][];
for (int i=0; i<arrList.size(); i++) {
    Mail mail = arrList.get(i);
    data[i] = {mail.getSubject(), mail.getFrom(), mail.getDate()};
}
 

mavinatic

Bekanntes Mitglied
Danke für die schnelle Antwort, auf die Lösung des Arrays bin ich auch schon gekommen, ABER!! :D dann kommt bei mir in eclipse eine Fehlermeldung nämlich folgende:

"Array constants can only be used in initializers"

Was bedeutet das und wie behebe ich das Problem?

Danke im Vorraus
 

mavinatic

Bekanntes Mitglied
Java:
package Data;

import java.util.ArrayList;
import java.util.Properties;

import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.NoSuchProviderException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.internet.ContentType;

public class GetMail 
{	
	public void GetMail(final Properties props) throws Exception
	{
		Session session = Session.getInstance( props, new javax.mail.Authenticator() 
		{ 
	          @Override protected PasswordAuthentication getPasswordAuthentication() 
	          { 
	            return new PasswordAuthentication( props.getProperty( "mail.pop3.user" ), props.getProperty( "mail.pop3.password" ) ); 
	          } 
	     } ); 
		
		Store store = session.getStore("pop3");
		store.connect();
		
		session.setDebug(true);
		
		Folder folder = store.getFolder("INBOX");
		folder.open( Folder.READ_ONLY );
		
		Message message[] = folder.getMessages();
		
		ArrayList<Mail> arrList = new ArrayList<Mail>();
		Mail me = null;
		
		
		for (int i=0; i<message.length; i++)
		{
			Message m = message[i];
			
			me = new Mail();
			me.setSubject(m.getSubject());
			me.setFrom(m.getFrom().toString());
			me.setDate(m.getSentDate().toString());			
			
			arrList.add(me);
		}
		
		
		String[][] data = new String[arrList.size()][];
		for (int i=0; i<arrList.size(); i++) 
		{
		    Mail mail = arrList.get(i);
		    data[i] = {mail.getSubject(), mail.getFrom(), mail.getDate()};
		}
		
		
		folder.close(false);
		store.close();
		
		
	}
		
}

das kommt bei deinen Array "einfüllen" mit daten, den teil den ich eingefügt habe...den du mir da oben reingeschrieben hast...
 
Zuletzt bearbeitet:

Michael...

Top Contributor
Sorry, hatte das vorhin hier (unkontrolliert) reingepostet. Der Code muss natürlich so lauten
Java:
data[i] = new String[] {mail.getSubject(), mail.getFrom(), mail.getDate()};
 

mavinatic

Bekanntes Mitglied
Kannst du mir jetzt mal zeigen wie ich jetzt die einzelnen "Teile"(Subject,From,Date) abrufe aus dem array!?

Wenn ich nämlich System.out.println(data); dann kommen ja nur die Objecte... :O
 

Michael...

Top Contributor
Wenn ich nämlich System.out.println(data); dann kommen ja nur die Objecte... :O

Da steckt ja schliesslich auch ein String Array drin ;-)
An die einzelnen Elemente kommt man z.B. mit Schleife in Schleife:
Java:
for (int i=0;i<data.length; i++)
	for (int k=0; k<data[i].length; k++)
		System.out.println(data[i][k]);
Wenn's nur um eine Kontrollausgabe auf der Konsole geht, könnte man das so machen:
Java:
for (int i=0;i<data.length; i++)
	System.out.println(java.util.Arrays.toString(data[i]));
 

mavinatic

Bekanntes Mitglied
Hey, ich habe ein Problem, nämlich...ich übergebe ein 2D-Array in mein "Content-Panel". ich hab mit dem DebugMode geguckt ob die Daten übergeben werden und ein wunder Ja sie sind in dem Array :O ich finde den fehler einfach nicht

Main
Java:
package GraphicUserInterface;

import java.awt.BorderLayout;
import java.io.FileNotFoundException;
import java.net.MalformedURLException;

import javax.swing.JFrame;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

import Data.PlugInManager;
import GraphicUserInterface.Content.Content;
import GraphicUserInterface.Control.Control;

public class Main extends JFrame {
	String[][] rowData = null;
	
	public Main() throws ClassNotFoundException, InstantiationException, IllegalAccessException, UnsupportedLookAndFeelException, MalformedURLException, FileNotFoundException
	{
		UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
		
		setPreferences();
		mainPanel();
		setVisible(true);
	}
	
	public void mainPanel() throws MalformedURLException, FileNotFoundException, InstantiationException, IllegalAccessException, ClassNotFoundException
	{
		PlugInManager p = new PlugInManager();
		rowData = p.convertToStringArray(p.loadPlugin(p.scanConfigFile(p.scanPlugInDirectory())));
		
		BorderLayout layout = new BorderLayout();
		setLayout(layout);
		
		Content content = new Content();
			content.setRowData(rowData);
			add("Center", content);
			
			
		Control control = new Control();
			control.setContent(content);
			add("South", control);
	}
	
	public void setPreferences()
	{
		setSize(400,300);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setLocationRelativeTo(null);
		setTitle("PlugInManager_TESTGUI");
		setResizable(false);
	}
	
	public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, UnsupportedLookAndFeelException, MalformedURLException, FileNotFoundException {
		Main m = new Main();
	}
}

PluginManager
Java:
package Data;
import java.io.File;
import java.io.FileNotFoundException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.Scanner;




public class PlugInManager {
	String[] pluginDirectory = null;
	String line = null;
	PlugIn app = null;
	String[][] rowData = null;
	String load = null;
	
	public String[] scanPlugInDirectory()
	{
		File f = new File("src/plugins/");
		File[] fList = f.listFiles();
		
		pluginDirectory = new String[fList.length];
		
		for(int i=0; i<fList.length; i++)
		{
			pluginDirectory[i] = fList[i].toString().substring(12);
			//System.out.println(pluginDirectory[i]);
		}
		
		return pluginDirectory;
	}
	
	public ArrayList<PlugIn> scanConfigFile(String[] pluginDirectory) throws FileNotFoundException
	{
		ArrayList<PlugIn> pluginList = new ArrayList<PlugIn>();
		for (int i=0; i<pluginDirectory.length; i++)
		{
			Scanner scn = new Scanner(new File("src/plugins/"+pluginDirectory[i]+"/"+"plugin.ini"));
			app = new PlugIn();
			
			while(scn.hasNext())
			{
				line=scn.nextLine();
				
				if(line.contains("name="))
				{
					app.setPlugin_Name(line.substring(5));
				}
				if(line.contains("runFile="))
				{
					app.setPlugin_RunFile(line.substring(8));
				}
				if(line.contains("image="))
				{
					app.setPlugin_ImagePath(line.substring(6));
				}
				
				app.setPlugin_dirName(pluginDirectory[i]);
			}
			
			if(app.getPlugin_Name()!=null & app.getPlugin_RunFile()!= null & app.getPlugin_ImagePath()!= null)
			{
				pluginList.add(app);
			}
		}
		
		return pluginList;
		
	}
	
	@SuppressWarnings("deprecation")
	public ArrayList<PlugIn> loadPlugin(ArrayList<PlugIn> pluginList) throws InstantiationException, IllegalAccessException, ClassNotFoundException, MalformedURLException
	{
		for(int i=0; i<pluginList.size(); i++)
		{
			File file = new File("src/plugins/"+pluginList.get(i).getPlugin_dirName()+"/"+pluginList.get(i).getPlugin_RunFile());
			ClassLoader fileLoader = URLClassLoader.newInstance(new URL[] {file.toURL()});
			PlugIns filePlugIn = (PlugIns) fileLoader.loadClass("plugins."+pluginList.get(i).getPlugin_dirName()+"."+pluginList.get(i).getPlugin_RunFile().toString().substring(0, pluginList.get(i).getPlugin_RunFile().toString().length()-5)).newInstance();
			
			pluginList.get(i).setPlugin_clsLoader(filePlugIn);
			pluginList.get(i).setPlugin_status(true);
		}
		
		return pluginList;
	}
	
	public String[][] convertToStringArray(ArrayList<PlugIn> pluginList)
	{
		rowData = new String[pluginList.size()][];
		for(int i=0; i<pluginList.size(); i++)
		{
			PlugIn plugin = pluginList.get(i);
			rowData[i] = new String[] { plugin.getPlugin_Name(), pluginList.get(i).getPlugin_RunFile(), checkPluginStatus(pluginList.get(i).getPlugin_status())};			
		}
		
		return rowData;
	}
	public String checkPluginStatus(boolean plugin_status)
	{
		if(plugin_status)
		{
			load = "plugin loaded";
		}
		else
		{
			load = "plugin unloaded";
		}
		return load;
	}
}

/* 1. Scannen der Ordner
 * 2. Scannen der einzelnen Plugin.ini Datei
 * 3. Objekt festlegen mit Atrributen 
 */

ContentPanel
Java:
package GraphicUserInterface.Content;

import java.awt.GridLayout;

import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class Content extends JPanel {
	DefaultTableModel model = null;
	JTable table = null;
	String[] colhead = { "plugin_name", "plugin_runfile", "plugin_status" };
	String[][] rowData = null;
	
	public Content()
	{
		GridLayout gLayout = new GridLayout(1,1);
		setLayout(gLayout);
		
		model = new DefaultTableModel(rowData, colhead);
		table = new JTable(model);
		JScrollPane scrollPane = new JScrollPane(table);
		
		add(scrollPane);
	}

	public void setRowData(String[][] rowData) {
		this.rowData = rowData;
		for (int i=0; i<rowData.length; i++)
		{
			for(int j=0;j<rowData[i].length;j++)
			{
				System.out.println(rowData[i][j]);
			}
		}
	}
}

Wäre cool wenn ihr mir mal auf die Sprünge helfen könntet, hab ich irgendetwas übersehen?
 

Ebenius

Top Contributor
Du musst die Daten natürlich noch dem Tabellenmodell übergeben: [java=28] public void setRowData(String[][] rowData) {
this.rowData = rowData;
this.model.setDataVector(rowData, colHead);
for (int i=0; i<rowData.length; i++)
{
for(int j=0;j<rowData.length;j++)
{
System.out.println(rowData[j]);
}
}
}[/code]
[size=-1]Ungetestet und im Browser getippt…[/size]

Ebenius
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Swing Wie Daten in der Form speichern? Array oder ArrayList AWT, Swing, JavaFX & SWT 2
D Swing ArrayList in Jlist/ List oder Array in JList/List AWT, Swing, JavaFX & SWT 5
Linjutsu Den Inhalten aus einer ArrayList Bilder zuweisen (Kartenspiel) AWT, Swing, JavaFX & SWT 8
mrbody234 ArrayList<Message> in eine TableView visualisieren AWT, Swing, JavaFX & SWT 2
Encera ArrayList mit eigenen Objekten in JavaFX sortieren und ausgeben AWT, Swing, JavaFX & SWT 50
S ChoiceBox aus ArrayList per setValue() mit Wert belegen funktioniert nicht. AWT, Swing, JavaFX & SWT 0
BananenBrötchen Swing Arraylist in jList anzeigen AWT, Swing, JavaFX & SWT 6
W Clear Canvas und anschließendes neues Erstellen von Objekten auf Canvas aus ArrayList AWT, Swing, JavaFX & SWT 4
missy72 JavaFX ObservableList in einer ArrayList speichern. AWT, Swing, JavaFX & SWT 7
B ArrayList, Strings anzeigen AWT, Swing, JavaFX & SWT 1
S JavaFx - ausgewählte Rows in Arraylist (Tableview) AWT, Swing, JavaFX & SWT 4
K Swing JComboBox mit ArrayList füllen AWT, Swing, JavaFX & SWT 4
GreenTeaYT Wie vergebe Ich den Jframe Title den Namen aus einem Element von der Arraylist ? AWT, Swing, JavaFX & SWT 4
B Klasse mit ArrayList AWT, Swing, JavaFX & SWT 1
I JTable dynamisch aus ArrayList befüllen AWT, Swing, JavaFX & SWT 3
ZoXlike Wie kann man ArrayList in JTabel einlesen? [WindowBuilder] AWT, Swing, JavaFX & SWT 1
E Eigenes TableModel für ArrayList<String[]> AWT, Swing, JavaFX & SWT 5
S ArrayList Problem AWT, Swing, JavaFX & SWT 3
T JTable dynamisch mit ArrayList AWT, Swing, JavaFX & SWT 2
S Swing JList, ArrayList + DefaultModel AWT, Swing, JavaFX & SWT 5
Ollek JList - neuer Eintrag in ArrayList dadurch keine Anzeige der Objekte AWT, Swing, JavaFX & SWT 18
T Swing Ausgabe aus ArrayList in Klasse1 in jTextArea in Klasse2 AWT, Swing, JavaFX & SWT 2
E Problem mit ArrayList AWT, Swing, JavaFX & SWT 7
P Auf gefüllte ArrayList zugreifen AWT, Swing, JavaFX & SWT 12
P ArrayList Rectangles2D AWT, Swing, JavaFX & SWT 29
O JComboBox mit ArrayList füllen AWT, Swing, JavaFX & SWT 3
D Probleme bei Übertrag von ArrayList in Jtable AWT, Swing, JavaFX & SWT 2
F Swing ArrayList in JList anzeigen und Objekte auswählen AWT, Swing, JavaFX & SWT 2
L AWT paint mit ArrayList und Iterator AWT, Swing, JavaFX & SWT 3
Z Swing JButton,JFrame, ArrayList & so weiter... AWT, Swing, JavaFX & SWT 20
C Swing NullPointerException beim Hinzufügen von Checkboxes in eine ArrayList AWT, Swing, JavaFX & SWT 5
G Swing Elemente aus Arraylist auf JFrame anzeigen AWT, Swing, JavaFX & SWT 9
S JTable - 2D ArrayList & Falsche Werte. AWT, Swing, JavaFX & SWT 3
Screen Fehler bei Get-Methode für ArrayList AWT, Swing, JavaFX & SWT 8
M Swing JTable soll auf ArrayList zugreifen AWT, Swing, JavaFX & SWT 8
B Swing JButtons in eine Arraylist<JButton> einfügen AWT, Swing, JavaFX & SWT 2
J Daten aus einer Textdatei in ArrayList holen AWT, Swing, JavaFX & SWT 9
J ArrayList Inhalt zählen AWT, Swing, JavaFX & SWT 53
J ArrayList Datensätze komplett löschen AWT, Swing, JavaFX & SWT 8
J ArrayList Datensätze auswerten AWT, Swing, JavaFX & SWT 10
Y Swing Aktualisieren eines JPanel mit ArrayList im TableLayout AWT, Swing, JavaFX & SWT 2
L ArrayList Wert löschen klappt nicht AWT, Swing, JavaFX & SWT 11
C Swing ArrayList in JComboBox AWT, Swing, JavaFX & SWT 6
H ArrayList?! in Tabelle AWT, Swing, JavaFX & SWT 3
B ArrayList in JTable AWT, Swing, JavaFX & SWT 3
B ArrayList im JTextArea anzeigen lassen AWT, Swing, JavaFX & SWT 30
Ollek JTable - Tabelle füllen mit einer ArrayList AWT, Swing, JavaFX & SWT 22
T ArrayList aus KlasseA in KlasseB in JTextArea ausgeben AWT, Swing, JavaFX & SWT 12
KrokoDiehl EventListenerList vs. ArrayList AWT, Swing, JavaFX & SWT 3
I Swing JTree aus ArrayList<File> erzeugen AWT, Swing, JavaFX & SWT 15
C Swing ArrayList in jList AWT, Swing, JavaFX & SWT 3
Spot84 jtable mit checkboxnode dynamisch per arraylist füllen AWT, Swing, JavaFX & SWT 8
G Wie lasse ich einen Graphen zeichnen(mit einer ArrayList)? AWT, Swing, JavaFX & SWT 5
S Tree - ArrayList Zuordnung! AWT, Swing, JavaFX & SWT 13
nadal15 JTable und ArrayList - selected rows löschen AWT, Swing, JavaFX & SWT 6
G JTable - TableModel aus ArrayList AWT, Swing, JavaFX & SWT 8
QDog JComboBox updaten, ArrayList AWT, Swing, JavaFX & SWT 7
D JLabel's in einer ArrayList speichern? AWT, Swing, JavaFX & SWT 4
G jList mit ArrayList füllen AWT, Swing, JavaFX & SWT 3
G datensätze aus der db in einer arraylist speicher und in gui AWT, Swing, JavaFX & SWT 4
G Aus Arraylist bestimmte Objekte wiedergegeben bekommen? AWT, Swing, JavaFX & SWT 7
L JTable und Daten aus einer ArrayList AWT, Swing, JavaFX & SWT 6
A Components in einer ArrayList aus anderer Klasse speichern AWT, Swing, JavaFX & SWT 8
S Anzahl ActionEvents (Strings in eine ArrayList einfügen) AWT, Swing, JavaFX & SWT 4
izoards JavaFX TableView mit Array Inhalt füllen AWT, Swing, JavaFX & SWT 1
Jose05 NullPointerException bei Beschreiben eines Labels aus einem Array AWT, Swing, JavaFX & SWT 12
L Swing Wert vom Textfield in Array List hinzufügen AWT, Swing, JavaFX & SWT 2
A 2d array AWT, Swing, JavaFX & SWT 1
J Fenster mit Inhalten aus einem Array Füllen AWT, Swing, JavaFX & SWT 4
M Swing Objekt Array in GUI ausgeben AWT, Swing, JavaFX & SWT 1
N Array mit JavaFX Elementen AWT, Swing, JavaFX & SWT 9
H Aus Array Container Panel an Tabbedpane zuweisen AWT, Swing, JavaFX & SWT 29
G Eingabe in JTextField in Array speichern und in JList ausgeben AWT, Swing, JavaFX & SWT 7
J index im Array aussuchen AWT, Swing, JavaFX & SWT 1
J JavaFX von einem Array aus Buttons herausfinden auf welcher geklickt wurde aus dem Array. AWT, Swing, JavaFX & SWT 1
G JavaFX Fenster 1 Array übertragen zur Fenster 2 AWT, Swing, JavaFX & SWT 0
F JList auffüllen aus Array von Instanzen AWT, Swing, JavaFX & SWT 4
kilopack15 JLabels im Array erzeugen AWT, Swing, JavaFX & SWT 2
T AWT Grafik"Array" einzelne Elemente verschieben AWT, Swing, JavaFX & SWT 1
M JavaFX - Array in View auslesen AWT, Swing, JavaFX & SWT 12
S AWT Daten über TextField und Button in array speichern AWT, Swing, JavaFX & SWT 5
E AWT Bilder als "Array" abspeichern. AWT, Swing, JavaFX & SWT 4
J JavaFX Buttons mit Array erzeugen AWT, Swing, JavaFX & SWT 1
beatles Swing JTextField - Game Status aus Array anzeigen AWT, Swing, JavaFX & SWT 3
KilledByCheese Swing 2D JLabel Array Maze zeichnen AWT, Swing, JavaFX & SWT 2
Viktim Array Spielfeld wird in GUI gedreht AWT, Swing, JavaFX & SWT 5
T JTextField Array im JPanel wird nicht komplett angezeigt AWT, Swing, JavaFX & SWT 7
S AWT JTextFields durch Array im JMenu erzeugen? AWT, Swing, JavaFX & SWT 19
L JComponents in Array AWT, Swing, JavaFX & SWT 11
L Array mit JButton, wie rausfinden auf welche JButton geklickt wurde + index des JButtons ausgeben AWT, Swing, JavaFX & SWT 4
B Array Java AWT, Swing, JavaFX & SWT 0
S JTable Daten aus Array AWT, Swing, JavaFX & SWT 9
K Array von einer Action zur anderen bringen AWT, Swing, JavaFX & SWT 7
O 2D Weltgenerieren - 2D Array AWT, Swing, JavaFX & SWT 1
W Bei Button-klick neuen button in array hinzufügen AWT, Swing, JavaFX & SWT 7
H Image im Array per Knopfdruck ändern AWT, Swing, JavaFX & SWT 6
A JComboBox mit Array aktualisieren AWT, Swing, JavaFX & SWT 7
L Zwei String Array in eine Spalte einfügen AWT, Swing, JavaFX & SWT 1
F Swing Java Swing Array in Datei und wieder raus AWT, Swing, JavaFX & SWT 7
L 2D-Grafik PNG Datei in JLabel Array Problem AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben