Habe mir eine graphische Oberfläche (Swing) gebastelt. Sie sieht ungefähr so aus:
Kurze Erklärung zum Programm: Also das Programm soll beim klicken auf den "E-Mails empfangen"-Button die E-Mails von meinem Server abholen (das funktioniert auch schon soweit). Danach sollen alle empfangenen E-Mails (nur mit dem Titel des Betreffs) in der linken JTextArea angezeigt werden. Dort will ich dann, das man einzelne E-Mails (z.b per JRadioButton....) auswählen kann. Klickt man dann auf hinzuüfgen, so sollen alle ausgewählten E-Mails in der rechten JTextArea angezeigt werden. Wenn man dann auf Start klickt, werden die ausgewählten E-Mails nach InternetLinks durchsucht und im Abstand von 1 Min. sollen die einzelnen Internetseiten im Standardbrowser aufgerufen werden.
So jetzt zu meiner Fragen:
Wie soll ich die linke und rechte JTextArea formatieren (z.b JTable oder so) damit ich alles E-Mails angezeigt bekomme und wie gesagt eben auch einzelne E-Mails auswählen kann?
Mein bisheriger Quellcode:
PS: Bin auch sonst über jede Verbesserung und Vorschläge für das Programm dankbar!!
MFG Christian
Kurze Erklärung zum Programm: Also das Programm soll beim klicken auf den "E-Mails empfangen"-Button die E-Mails von meinem Server abholen (das funktioniert auch schon soweit). Danach sollen alle empfangenen E-Mails (nur mit dem Titel des Betreffs) in der linken JTextArea angezeigt werden. Dort will ich dann, das man einzelne E-Mails (z.b per JRadioButton....) auswählen kann. Klickt man dann auf hinzuüfgen, so sollen alle ausgewählten E-Mails in der rechten JTextArea angezeigt werden. Wenn man dann auf Start klickt, werden die ausgewählten E-Mails nach InternetLinks durchsucht und im Abstand von 1 Min. sollen die einzelnen Internetseiten im Standardbrowser aufgerufen werden.
So jetzt zu meiner Fragen:
Wie soll ich die linke und rechte JTextArea formatieren (z.b JTable oder so) damit ich alles E-Mails angezeigt bekomme und wie gesagt eben auch einzelne E-Mails auswählen kann?
Mein bisheriger Quellcode:
Code:
import javax.swing.*;
import java.net.*;
import java.util.Properties;
import java.awt.*;
import javax.mail.*;
import javax.activation.*;
import javax.imageio.*;
import java.awt.image.*;
import layout.TableLayout;
import java.awt.event.*;
public class E_Mail extends JFrame{
private JLabel titel, email, testemail;
private JPanel titelleiste, center, south, west, east;
private JTextArea westT, eastT;
private JButton hinzu, entf, empf, aufr;
/** Konstruktor */
public E_Mail(String name){
super(name);
this.setIconImage(loadImage("images/email.gif")); // erstellt ein Icon für das Fenster
this.setSize(900, 600); // definiert die Größe des Fensters
this.setLayout(new BorderLayout(10, 10)); // defienert das Layout des JFRames
// Gestaltung des NORTH-FELDES
titelleiste = new JPanel(new FlowLayout(FlowLayout.CENTER, 10, 10));
titel = new JLabel("AUTOMATISCHES ABRUFEN VON INTERNETSEITEN!!!");
titel.setFont(new Font("Arial", Font.BOLD, 20));
titelleiste.add(titel);
// Gestaltung des WEST-FELDES
double[][] sizeW = {{10, TableLayout.FILL}, {20, 10, TableLayout.FILL}};
west = new JPanel(new TableLayout(sizeW));
email = new JLabel("Empfangene E-Mails");
westT = new JTextArea(40, 30);
west.add(westT, "1, 2, C, C");
west.add(email, "1, 0, C, C");
// Gestaltung des CENTER-FELDES
double[][] size = {{TableLayout.FILL}, { TableLayout.FILL, 30, TableLayout.FILL}};
center = new JPanel(new TableLayout(size));
hinzu = new JButton ("Hinzufügen -->");
hinzu.addActionListener(new Action());
entf = new JButton (" <-- Entfernen ");
entf.addActionListener(new Action());
center.add(hinzu, "0, 0, C, B");
center.add(entf, "0, 2, C, T");
// Gestaltung des EAST-FELDES
double[][] sizeE = {{TableLayout.FILL, 10}, {20, 10, TableLayout.FILL}};
east = new JPanel(new TableLayout(sizeE));
testemail = new JLabel("Zu überprüfende E-Mails");
eastT = new JTextArea(40, 30);
east.add(eastT, "0, 2, C, C");
east.add(testemail, "0, 0, C, C");
// Gestaltung des SOUTH-FELDES
south = new JPanel(new FlowLayout(FlowLayout.CENTER, 80, 10));
empf = new JButton("E-Mails empfangen");
empf.addActionListener(new Action());
aufr = new JButton (" Start ");
south.add(empf);
south.add(aufr);
// In aktuellen JFrame einbinden
this.add(center, BorderLayout.CENTER);
this.add(titelleiste, BorderLayout.NORTH);
this.add(west, BorderLayout.WEST);
this.add(east, BorderLayout.EAST);
this.add(south, BorderLayout.SOUTH);
// Beenden
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
// Methode um Bilder einlesen zu können
public BufferedImage loadImage(String name){
URL url = null;
try{
url = getClass().getClassLoader().getResource(name);
return ImageIO.read(url);
} catch (Exception e){
System.out.println ("Kann die Datei " + url + " nicht öffnen");
System.exit(0);
}
return null;
}
// Methode um E-Mails zu empfangen
public void getMails() throws Exception{
String host = ...;
String username = ...;
String password = ...;
// Create empty properties
Properties props = new Properties();
// Get session
Session session = Session.getDefaultInstance(props, null);
// Get the store
Store store = session.getStore("pop3");
store.connect(host, username, password);
// Get folder
Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_ONLY);
// Get directory
Message message[] = folder.getMessages();
for (int i=0, n=message.length; i<n; i++) {
westT.setText((i + ": " + message[i].getFrom()[0] + "\t" + message[i].getSubject()));
}
// Verbindung beenden
folder.close(false);
store.close();
}
public static void main(String[] args){
E_Mail email = new E_Mail("Automatische E-Mail Beantwortung");
email.setVisible(true);
}
class Action implements ActionListener{
public void actionPerformed(ActionEvent e){
actions(e);
}
public void actions(ActionEvent e){
if (e.getActionCommand() == hinzu.getText()){
eastT.setText(westT.getText());
}
if (e.getActionCommand() == entf.getText()){
eastT.setText("");
}
if (e.getActionCommand() == empf.getText()){
try{
getMails();
} catch (Exception a){
System.out.println(a.getCause());
}
}
}
}
}
PS: Bin auch sonst über jede Verbesserung und Vorschläge für das Programm dankbar!!
MFG Christian