In einer JTextArea eine JTable einfügen?

  • Themenstarter Themenstarter Louis2
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
L

Louis2

Gast
Hallo,

ich habe ein JavaMail Prog. programmiert, also mit JTextField (Server, To, From, Subject) und mit einer JTextArea.
Nun möchte ich wissen, ob man in der JTextarea eine JTable einfügen kann??? Geht das, und wenn ja wie??

Danke.
 
Wildcard hat gesagt.:
Erklär mal genauer was du haben willst? Warum eine Table in einer TextArea? ???:L

Ich möchte aus eine DB Daten holen, sie in einem Array speichern und sie dann in einer Tabelle auslesen.
Diese Tabelle sollte in der TextArea der Mail erscheinen, damit die Daten auch übersichtlicher sind.

Ich könnte ja natürlich die Daten aus der DB herausholen und sie gleich auch in die TextArea erscheinen lassen, aber dann würden sie nicht so "übersichtlich" sein.
Das ist mein Hintergrund, aber momentan beschäftige ich mich noch mit dem Array :x :wink:
 
Wildcard hat gesagt.:
Dir ist schon klar das man mit Mails Text verschickt und keine SwingKomponenten :autsch:
Och naja hatte gedacht, dass man eine Tabelle noch erstellen könnte, und sie dann wenn die mail gesendet wird umgewandelt wird...
Keine Ahnung... schade.
 
Louis2 hat gesagt.:
Och naja hatte gedacht, dass man eine Tabelle noch erstellen könnte, und sie dann wenn die mail gesendet wird umgewandelt wird...
Keine Ahnung... schade.
Java ist eine Programmiersprache und kein html :bahnhof:
EDIT:
Damit das gleich geklärt ist, du kannst auch keine TextArea per Mail verschicken :lol:
 
Roar hat gesagt.:
sky80 hat gesagt.:
Roar hat gesagt.:
sky80 hat gesagt.:
Du kannst aber html-Code in einer TextArea anzeigen ;-)
code anzeigen schon aber nich rendern :bae:
Deshalb habe ich explizit html-Code geschrieben!

Wenn's gerendert werden soll, so ist natürlich ein JTextPane o.ä. zu verwenden
najoar is nur bisschen unserunfreundlich wenn der seine html mails selbst html'en muss
Selbst schuld! In ner email reicht plain-text... alles andere wird bei mir sowieso ungelesen gelöscht!
 
@All: Ok, also keine JTable.... obwohl wenn ich statt einer JTextArea eine JTable benutze, wie wird die mail denn verschickt, bzw. wie wird sie ankommen (ich meine damit die Darstellung)? Tabellenmäßig (was logisch wäre) 🙂 ?

Ich habe ja Daten in einem Array gespeichert und möchte sie jetzt als Tabellenformat ausgeben (es sind ja in der DB verschiedene Felder/Spalten sozusagen) in JTextArea oder JTable, Ziel muss sein, dass ich dann die Daten verschicken kann und sie übersichtlich sind, also Tabellen Form.
Momentan gebe ich in JTextArea sowas aus:
KA0043 null null 100
KA0063 2 null null
KA1070 10 null 2350

Ich möchte aber erzielen, dass alles schön gegliedert ist und nciht verrutscht. Ich habe dafür "\t" benutzt, die Frage ist, kann ich auch die Grösse der Spalte damit festlegen?

Oder hätte sonst einer ne Idee wie ich es schön gliedern könnte.

Mein Code:
Code:
try 
{ 
    String resultauftrag=new String(); 
    Class.forName("oracle.jdbc.driver.OracleDriver"); 
    //DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver()); 
    String url = "jdbc:oracle:thin:@"+DBServer+":1521:"+DBName; 
    Connection connection = DriverManager.getConnection(url, DBUser, DBPassword); 
    connection.setAutoCommit(false); 
                
    Statement auftrag = connection.createStatement(); 
    resultauftrag = "SELECT AUF001, AUF012, AUF004, AUF015, AUF016, AUF020 FROM Auftrag WHERE customerid='1619'"; 
    ResultSet rs = auftrag.executeQuery(resultauftrag); 
    connection.commit(); 
                
    java.util.List auf001 = new ArrayList(); 
    java.util.List auf012 = new ArrayList(); 
    java.util.List auf004 = new ArrayList(); 
    java.util.List auf015 = new ArrayList(); 
    java.util.List auf016 = new ArrayList(); 
    java.util.List auf020 = new ArrayList(); 
    while (rs.next()) 
    { 
        auf001.add(rs.getString(1)); 
        auf012.add(rs.getString(2)); 
        auf004.add(rs.getString(3)); 
        auf015.add(rs.getString(4)); 
        auf016.add(rs.getString(5)); 
        auf020.add(rs.getString(6)); 
    } 
    Map map = new HashMap(); 
    map.put("Auftragsnummer", auf001); 
    map.put("Kommunikationsnummer", auf012); 
    map.put("Gedruckt am", auf004); 
    map.put("Umsatzwert", auf015); 
    map.put("WE", auf016); 
    map.put("Zustand", auf020); 

    java.util.List listauf001 = (java.util.List) map.get("Auftragsnummer"); 
    java.util.List listauf012 = (java.util.List) map.get("Kommunikationsnummer"); 
    java.util.List listauf004 = (java.util.List) map.get("Gedruckt am"); 
    java.util.List listauf015 = (java.util.List) map.get("Umsatzwert"); 
    java.util.List listauf016 = (java.util.List) map.get("WE"); 
    java.util.List listauf020 = (java.util.List) map.get("Zustand"); 
    String outlist001; 
    String outlist012; 
    String outlist004; 
    String outlist015; 
    String outlist016; 
    String outlist020; 
    for (int n=0;n<listauf001.size();n++) 
    { 
        outlist001 = (String) listauf001.get(n); 
        outlist012 = (String) listauf012.get(n); 
        outlist004 = (String) listauf004.get(n); 
        outlist015 = (String) listauf015.get(n); 
        outlist016 = (String) listauf016.get(n); 
        outlist020 = (String) listauf020.get(n); 

        message.append(outlist001 + " " + outlist012 + " " + outlist004 + " " + outlist015 + " " + outlist016 + " " + outlist020 + "\n"); 
        
    } 
}
 
Hallo,

so nun habe ich statt einer JTextArea eine JTable anzeigen lassen.
Beim senden kommt jedoch eine Fehlermeldung:
Code:
javax.mail.MessagingException: IOException while sending message;
  nested exception is:
        java.io.IOException: No content
        at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:566)
        at javax.mail.Transport.send0(Transport.java:151)
        at javax.mail.Transport.send(Transport.java:80)
        at SammelMailGUI_Swing$1.run(SammelMailGUI_Swing.java:232)
        at java.lang.Thread.run(Thread.java:534)

D.h natürlich weiss das Prog. nicht was es senden soll, da ich "msg.setContent(message.getText(), "text/plain");" auskommentiert habe
und damit eigentlich der Text der gesendet werden muss geholt wird.

Nun die FrageN:
1. wie holen ich denn raus was in der Tabelle steht?? msg.setContent(table.???)
2. Wie kommen die Daten an, als Tabelle oder ohne Raster ohne nichts? Geht das Senden überhaupt (generell)?


Code:
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.io.*;
import java.sql.*;

public class SammelMailGUI_Swing extends JFrame 
{
    private JButton sendButton = new JButton("Send Message");
    private JLabel fromLabel = new JLabel("From: ");
    private JLabel toLabel = new JLabel("To: ");
    private JLabel hostLabel = new JLabel("SMTP Server: ");
    private JLabel subjectLabel = new JLabel("Subject: ");
    private JTextField fromField = new JTextField(40);
    private JTextField toField = new JTextField(40);
    private JTextField hostField = new JTextField(40);
    private JTextField subjectField = new JTextField(40);
    //private JTextArea message = new JTextArea(40,40);
    //private JScrollPane jsp = new JScrollPane(message);
    
    String INIEmailFrom;
    String INIHost;
    BufferedReader b; 
    String line; 
    String Mailline;
    String[] tmp = null;
    int counter=0;
    String DBServer;
    String DBName;
    String DBUser;
    String DBPassword;
    
    public SammelMailGUI_Swing() 
    {
        super("SammelMailGUI_Swing");
        
        try 
        { 
            File Data = new File("C:/Dokumente und Einstellungen/Lempert/Desktop/Project/Data.ini"); 
            b = new BufferedReader(new InputStreamReader(new FileInputStream(Data)));  
            while ((line = b.readLine()) != null) 
            { 
                tmp = line.split(": ");  
                
                if (counter==0)
                    INIEmailFrom=tmp[1];
                else if (counter==1)
                    INIHost=tmp[1]; 
                else if (counter==2)
                    DBServer=tmp[1];
                else if (counter==3)
                    DBName=tmp[1];
                else if (counter==4)
                    DBUser=tmp[1];
                else if (counter==5)
                    DBPassword=tmp[1];
                counter++;
            } 
                b.close(); 
        } 
        catch (IOException e) 
        { 
            System.out.println("Error during data reading"); 
        } 
        
        //try 
        //{ 
            //File MailData = new File("C:/MailSend.ini"); 
            //b = new BufferedReader(new InputStreamReader(new FileInputStream(MailData)));  
            //while ((Mailline = b.readLine()) != null) 
            //{ 
                //message.append(Mailline+ " \n");
            //} 
                //b.close(); 
               
        //} 
        //catch (IOException e) 
        //{ 
            //System.out.println("Error during data reading"); 
        //} 
         try 
            { 
                String resultauftrag=new String();
                Class.forName("oracle.jdbc.driver.OracleDriver"); 
                //DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver());
                String url = "jdbc:oracle:thin:@"+DBServer+":1521:"+DBName; 
                Connection connection = DriverManager.getConnection(url, DBUser, DBPassword);
                connection.setAutoCommit(false);
                
                Statement auftrag = connection.createStatement(); 
                resultauftrag = "SELECT AUF001, AUF012, AUF004, AUF015, AUF016, AUF020 FROM Auftrag WHERE customerid='1619'"; 
                ResultSet rs = auftrag.executeQuery(resultauftrag); 
                connection.commit();
                
                java.util.List auf001 = new ArrayList(); 
                java.util.List auf012 = new ArrayList();
                java.util.List auf004 = new ArrayList(); 
                java.util.List auf015 = new ArrayList();
                java.util.List auf016 = new ArrayList(); 
                java.util.List auf020 = new ArrayList();
                while (rs.next()) 
                { 
                    auf001.add(rs.getString(1)); 
                    auf012.add(rs.getString(2)); 
                    auf004.add(rs.getString(3)); 
                    auf015.add(rs.getString(4));
                    auf016.add(rs.getString(5)); 
                    auf020.add(rs.getString(6));
                } 
                Map map = new HashMap(); 
                map.put("Auftragsnummer", auf001); 
                map.put("Kommissionsnummer", auf012); 
                map.put("Gedruckt am", auf004); 
                map.put("Umsatzwert", auf015); 
                map.put("WE", auf016); 
                map.put("Zustand", auf020); 

                java.util.List listauf001 = (java.util.List) map.get("Auftragsnummer"); 
                java.util.List listauf012 = (java.util.List) map.get("Kommissionsnummer"); 
                java.util.List listauf004 = (java.util.List) map.get("Gedruckt am"); 
                java.util.List listauf015 = (java.util.List) map.get("Umsatzwert"); 
                java.util.List listauf016 = (java.util.List) map.get("WE"); 
                java.util.List listauf020 = (java.util.List) map.get("Zustand"); 
                String outlist001; 
                String outlist012;
                String outlist004;
                String outlist015;
                String outlist016;
                String outlist020;
                int len=listauf001.size();
                
                for (int n=0;n<len;n++) 
                { 
                    outlist001 = (String) listauf001.get(n); 
                    outlist012 = (String) listauf012.get(n); 
                    outlist004 = (String) listauf004.get(n); 
                    outlist015 = (String) listauf015.get(n); 
                    outlist016 = (String) listauf016.get(n); 
                    outlist020 = (String) listauf020.get(n); 

                    //message.append(outlist001 + "\t " + outlist012 + "      \t " + outlist004 + "\t " + outlist015 + "\t " + outlist016 + "\t " + outlist020 + "\n");
                }
            }
            catch(ClassNotFoundException e1) 
            { 
                e1.printStackTrace(); 
            } 
            catch(Exception e2) 
            {    
                e2.printStackTrace(); 
            } 
        
        Container contentPane = this.getContentPane();
        contentPane.setLayout(new BorderLayout());
        
        JPanel labels = new JPanel();
        labels.setLayout(new GridLayout(4,1));
        labels.add(hostLabel);
        
        JPanel fields = new JPanel();
        fields.setLayout(new GridLayout(4,1));
        
        hostField.setText(INIHost);
        hostField.setEditable(false);
        fields.add(hostField);
        
        labels.add(toLabel);
        fields.add(toField);
        
        fromField.setText(INIEmailFrom);
        fromField.setEditable(false);
        labels.add(fromLabel);
        fields.add(fromField);
        
        labels.add(subjectLabel);
        fields.add(subjectField);
        
        Box north = Box.createHorizontalBox();
        north.add(labels);
        north.add(fields);
                
        //message.setEditable(false);
                
        contentPane.add(north, BorderLayout.NORTH);
        
        //message.setFont(new Font("Monospaced", Font.PLAIN,12));
        //contentPane.add(jsp,BorderLayout.CENTER);
        
        JPanel south = new JPanel();
        south.setLayout(new FlowLayout(FlowLayout.CENTER));
        south.add(sendButton);
        sendButton.addActionListener(new SendAction());
        contentPane.add(south, BorderLayout.SOUTH);
        
        this.pack();
    }  
    class SendAction implements ActionListener
    {
        public void actionPerformed(ActionEvent evt) 
        {
            try
            {
                Properties props=new Properties();
                props.put("mail.host", hostField.getText());
                
                Session mailConnection=Session.getInstance(props,null);
                final Message msg=new MimeMessage(mailConnection);
                
                Address to=new InternetAddress(toField.getText());
                Address from=new InternetAddress(fromField.getText());
                
                //msg.setContent(message.getText(), "text/plain");
                msg.setFrom(from);
                msg.setRecipient(Message.RecipientType.TO, to);
                msg.setSubject(subjectField.getText());
                
                Runnable r = new Runnable()
                {
                    public void run()
                    {
                        try
                        {
                            Transport.send(msg);
                        }
                        catch (Exception e)
                        {
                            e.printStackTrace();
                        }
                    }
                };
                Thread t = new Thread(r);
                t.start();
                
                //message.setText("");
            }
            catch (Exception e)
            {
                e.printStackTrace();                
            }
        }
    }
       
    public static void main(String[] args)
    {
        
        String[][] data = new String[][]{ 
            {"a", "b", "c", "d"}, 
            {"e", "f", "g", "h"}, 
            {"i", "j", "k", "l"} 
      }; 
      String[] title = new String[]{ 
            "A", "B", "C", "D" 
      };
        JTable table = new JTable(data,title);
        SammelMailGUI_Swing client = new SammelMailGUI_Swing();
        client.getContentPane().add( new JScrollPane( table ) ); 
        client.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        client.pack(); 
        client.setVisible( true ); 
        client.show();
    } 
}

(Siehe auch letztes Posting)
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben