tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
10
ZUGRIFFE
1168
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    BeneS BeneS ist offline Mitglied
    Registriert seit
    Sep 2004
    Beiträge
    17
    hey folks,

    ich habe bereits eine txt Datei eingelesen und die Wörter in einem array (text[i]) abgespeichert.

    Ist das jetzt irgendwie möglich dieses Array auf einer tabelle mit JTabel auszugeben.

    Ich habe schon irgendwie soetwas versucht:

    String Spalten [] = new String[8];
    String Zeilen[][] = new String[100][8];

    for (int j=0;j<8;j++)
    {
    text[j]=Spalten[j];
    }

    for(int k=10;k<100;k++)
    {
    text[k]=Zeilen[k][k]; //das kann glaub ich gar ned oder?
    }

    JTable table = new JTable(Zeilen, Spalten);

    Keine Ahnung,ob das der richtige Ansatz ist... Ich hab noch nicht ganz soviel Plan.Aber ich muss das grad im Praktikum für meine Firma machen...

    Freue mich über jede Hilfe.

    mfg

    Bene
     

  2. #2
    Registriert seit
    Apr 2004
    Ort
    Ruhrgebiet
    Beiträge
    1.582
    Original geschrieben von BeneS
    hey folks,
    ich habe bereits eine txt Datei eingelesen und die Wörter in einem array (text[i]) abgespeichert.

    Ist das jetzt irgendwie möglich dieses Array auf einer tabelle mit JTabel auszugeben.

    Freue mich über jede Hilfe.

    mfg
    Bene
    Diese Frage taucht immer wieder auf, vielleicht bietet sich ein Tutorial dazu an...
    Sorry, Dir das haarklein zu erklären dauert zu lange. Schau mal im Archiv / Suche nach TableModel. Diese Krücke mit Array habe ich mir jedenfalls schon lange abgewöhnt...
     

  3. #3
    Avatar von Vincentius
    Vincentius Vincentius ist offline Mitglied Brokat
    Registriert seit
    Sep 2004
    Ort
    Stuttgart
    Beiträge
    295
    Original geschrieben von BeneS
    Code :
    1
    2
    3
    4
    5
    
    ...
    text[j]=Spalten[j];
    ...
    text[k]=Zeilen[k][k];
    ...
    Ich weiß nicht, für was die Variable text steht, aber sollte das andersrum sein:
    Code :
    1
    2
    3
    4
    5
    
    ...
    Spalten[j]=text[j];
    ...
    Zeilen[k][k]=text[k];
    ...
     

  4. #4
    BeneS BeneS ist offline Mitglied
    Registriert seit
    Sep 2004
    Beiträge
    17
    in text[i] sind die einzelnen worte aus der txt file gespeichert.

    ich habe das mit dem txt mal gelassen und mich einfach mal an eine einfache tabelle mit menüleiste gemacht. diese will ich nach und nach modifizieren. Das Problem ist gerade, dass meine tabelle nicht automatisch die scrollbar mit einbindet :
    JMenuBar menu = new JMenuBar(); //Menüleiste erstellen
    setJMenuBar(menu);
    JMenu datei = new JMenu("Datei");
    JMenu bearbeiten = new JMenu("Bearbeiten");
    JMenuItem öffnen = new JMenuItem("Öffnen");
    JMenuItem beenden = new JMenuItem("Beenden");
    JMenuItem kopieren = new JMenuItem("Kopieren");
    JMenuItem einfügen = new JMenuItem("Einfügen");

    //Items zur Leiste hinzufügen
    datei.add(öffnen);
    datei.add(beenden);
    bearbeiten.add(kopieren);
    bearbeiten.add(einfügen);
    menu.add(datei);
    menu.add(bearbeiten);

    //Tabelle einfügen
    CustomModel meins = new CustomModel();
    JTable table = new JTable(meins);
    table.setSelectionBackground(Color.black);
    table.setSelectionForeground(Color.white);
    table.setColumnSelectionAllowed(true);
    table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

    //ScrollPanel erstellen
    JPanel panel = new JPanel();
    JScrollPane scroll = new JScrollPane(table);
    panel.setLayout(new BorderLayout());
    panel.add(scroll, BorderLayout.CENTER);

    getContentPane().add(table);

    Ich weiß nicht wo der Fehler liegt.die Menüleiste sitzt perfekt, aber die Scrollbar wird bei der Vergrößerung des Fensters nicht eingefügt.

    wäre dankbar für tips.

    mfg

    Bene
     

  5. #5
    Avatar von Vincentius
    Vincentius Vincentius ist offline Mitglied Brokat
    Registriert seit
    Sep 2004
    Ort
    Stuttgart
    Beiträge
    295
    Original geschrieben von BeneS
    getContentPane().add(table);
    Statt table sollte hier panel stehen.
     

  6. #6
    BeneS BeneS ist offline Mitglied
    Registriert seit
    Sep 2004
    Beiträge
    17
    stimmt, jetzt gehts aber wenn man da scroll reinschreibt, funktionierts auch
     

  7. #7
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo!

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    
    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.KeyAdapter;
    import java.awt.event.KeyEvent;
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.StringTokenizer;
    import java.util.Vector;
     
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.SwingUtilities;
    import javax.swing.table.DefaultTableModel;
     
    public class JTableTextDemo extends JFrame {
     
        private JTable table;
        private JScrollPane scrollPane;
        private String filePath = "c:/Data.csv";
        private JButton btnLoad, btnSave;
        private Object[] tableHeader;
        private static final char SEPARATOR_CHAR = ';';
        private boolean occupied = false;
     
        public JTableTextDemo() {
            super("JTableTextDemo");
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            init();
     
            setVisible(true);
            pack();
     
        }
     
        /**
         * 
         */
        private void init() {
     
            ActionListener listener = new ActionHandler();
     
            btnLoad = new JButton("Load");
            btnLoad.addActionListener(listener);
            getContentPane().add(btnLoad, BorderLayout.CENTER);
     
            btnSave = new JButton("Save");
            btnSave.addActionListener(listener);
            getContentPane().add(btnSave, BorderLayout.SOUTH);
     
            table = new JTable(0, 0);
     
            table.addKeyListener(new KeyAdapter() {
                public void keyPressed(KeyEvent evt) {
                    int code = evt.getKeyCode();
                    if (code == KeyEvent.VK_ENTER || code == KeyEvent.VK_TAB) {
                        int row = table.getSelectedRow();
                        int column = table.getSelectedColumn();
                        (
                            (DefaultTableModel) table
                                .getModel())
                                .fireTableCellUpdated(
                            row,
                            column);
                    }
     
                }
            });
     
            table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
            scrollPane = new JScrollPane(table);
            getContentPane().add(scrollPane, BorderLayout.NORTH);
     
        }
     
        public static void main(String[] args) {
            new JTableTextDemo();
        }
     
        private Object[][] readData() {
            File file = new File(filePath);
     
            BufferedReader br = null;
            try {
     
                br = new BufferedReader(new FileReader(file));
                String line = null;
                StringTokenizer tokenizer = null;
                int clmCnt = 0;
                List list = new ArrayList();
     
                while ((line = br.readLine()) != null) {
                    tokenizer = new StringTokenizer(line, ";");
                    clmCnt = tokenizer.countTokens();
                    Object[] rowData = new Object[clmCnt];
                    int i = 0;
                    while (tokenizer.hasMoreTokens()) {
                        rowData[i++] = tokenizer.nextElement();
                    }
                    list.add(rowData);
                }
                tableHeader = new Object[clmCnt];
                for (int i = 0; i < tableHeader.length; i++) {
                    tableHeader[i] = "Column" + i;
                }
     
                int size = list.size();
                Object[][] rows = new Object[size][];
                for (int i = 0; i < size; i++) {
                    rows[i] = (Object[]) list.get(i);
                }
     
                list.clear();
     
                return rows;
     
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (br != null) {
                    try {
                        br.close();
                    } catch (IOException e1) {
                        e1.printStackTrace();
                    }
                }
            }
     
            return new Object[0][0];
        }
     
        public void store() {
            BufferedWriter bw = null;
            File file = new File(filePath);
            try {
                bw = new BufferedWriter(new FileWriter(file));
     
                DefaultTableModel dtm = (DefaultTableModel) table.getModel();
                Object[] oa = dtm.getDataVector().toArray();
                for (int i = 0; i < oa.length; i++) {
                    Object[] o = ((Vector) oa[i]).toArray();
                    for (int j = 0; j < o.length; j++) {
                        bw.write(o[j].toString());
                        bw.write(SEPARATOR_CHAR);
                    }
                    bw.newLine();
                }
     
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (bw != null) {
                    try {
                        bw.flush();
                        bw.close();
                    } catch (IOException e1) {
                        e1.printStackTrace();
                    }
                }
            }
        }
     
        class ActionHandler implements ActionListener {
            public void actionPerformed(ActionEvent e) {
                Object src = e.getSource();
                if (src == btnLoad) {
                    if (occupied)
                        return;
                    SwingUtilities.invokeLater(new Runnable() {
                        public void run() {
                            occupied = true;
                            DefaultTableModel dtm =
                                new DefaultTableModel(readData(), tableHeader);
                            table.setModel(dtm);
                            occupied = false;
                        }
                    });
     
                } else if (src == btnSave) {
                    if (occupied)
                        return;
                    SwingUtilities.invokeLater(new Runnable() {
                        public void run() {
                            occupied = true;
                            store();
                            occupied = false;
                        }
                    });
                }
            }
        }
    }

    data.csv
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    1;2;3;4;5;6;7
    3;5;7;9;11;13;7
    8;12;16;20;24;20;3
    20;28;36;44;44;23;3
    48;64;80;88;67;26;2
    112;144;168;155;93;28;11
    256;312;323;248;121;39;5
    568;635;571;369;160;44;6

    HTH
    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  8. #8
    BeneS BeneS ist offline Mitglied
    Registriert seit
    Sep 2004
    Beiträge
    17
    wahnisinn. hätt ich jetzt nicht erwartet.zumal ich mich in das meiste erst reinarbeiten muss... :-| .

    ICh versteh jetzt aber nicht, warum das so auch ohne TableModel geht?Wo sagst du denn dem Compiler
    "Bau ein Table mit so viel Spalten und so viel zeilen mir dem und dem inhalt?"

    ist das alles in der read Funktion?
     

  9. #9
    Hasba Hasba ist offline Mitglied
    Registriert seit
    Mar 2005
    Beiträge
    13
    Hallo Mr. Tom, unser Java Profi,
    ich habe eine CSV-Datei ausgelesen und erst mal wieder in eine CSV-Datei gespeichert später soll ich die Daten in eine Jtable ausgeben.bevor ich den Schritt mache muss ich die Daten sortieren.
    hier eine Auschnitt der CSV-Datei vor dem auslesen:
    Auftraggeber Material Periode OAuftMnge OAuftMnge Off.Auftrg Off.Auftrg Um Netto1 Um Netto1 Gu Netto1 Gu Netto1
    11010 Müller Mustermann A 2004.10 21 ST 0 $ 0 $ 0 $
    11010 Hartmann GmbH A 2005.10 40 ST 0 $ 0 $ 0 $
    11010 Oliver Jansen B 2002.01 51 ST 0 $ 0 $ 0 $
    11011 Bernd Muster C 2003.11 1 ST 0 $ 0 $ 0 $
    11011 Bernd Hans D 2005.12 11 ST 0 $ 0 $ 0 $
    11010 Müller Mustermann A 2001.04 0 ST 0,00 $ 0 $ 0 $
    11010 Hartmann GmbH C 2001.04 11 ST 0,00 $ 0 $ 0 $
    11010 Oliver Jansen F 2001.04 1 ST 0 $ 0 $ 0 $
    11011 Bernd Muster D 2005.05 0 ST 0 $ 1.020,00 $ 0 $
    diese ist als CSV gespeichert. d.h. mit ";" getrennt.

    also wichtig ist für mich das 2 und 3 Feld: also Material und Menge die möchte ich sortiert und summiert: z.B.: vom Material A haben wir 4 in Menge unsw.

    diese sortierte Daten möchte anschliessend in JTable einfach anzeigen.

    bitte um Hilfe. Falls Du den kompletten Code braucht kann ich Dir per e-mail schicken! ich denke das ist die Arbeit con minuten wenn Du dir mal den Code schaust.
    danke noch mal im voraus
    Geändert von Hasba (23.03.05 um 14:34 Uhr) Grund: korrektur
     

  10. #10
    Registriert seit
    Apr 2004
    Ort
    Ruhrgebiet
    Beiträge
    1.582
    Zitat Zitat von Hasba
    Hallo Mr. Tom, unser Java Profi,
    ich habe eine CSV-Datei ausgelesen und erst mal wieder in eine CSV-Datei gespeichert später soll ich die Daten in eine Jtable ausgeben.bevor ich den Schritt mache muss ich die Daten sortieren.

    diese sortierte Daten möchte anschliessend in JTable einfach anzeigen.

    bitte um Hilfe. Falls Du den kompletten Code braucht kann ich Dir per e-mail schicken! ich denke das ist die Arbeit con minuten wenn Du dir mal den Code schaust.
    danke noch mal im voraus
    Also zumindest eine (allgemeine) Sortierung in Tabellen nach Spaltenklick (http://www.java-forum.org/de/viewtopic.php?t=7704) ist nicht gerade trivial und auch nicht "mal eben" in einer Stunde erledigt.
     

  11. #11
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
     

Ähnliche Themen

  1. Antworten: 10
    Letzter Beitrag: 27.10.06, 17:10
  2. Inhalte aus TXT-File in zwei Textfelder ausgeben
    Von intercorni im Forum Flash Plattform
    Antworten: 7
    Letzter Beitrag: 18.10.05, 12:52
  3. MIDI/WAV File aus Consolenprogramm ausgeben
    Von worstcase im Forum C/C++
    Antworten: 4
    Letzter Beitrag: 12.09.05, 20:09
  4. html file einlesen und ausgeben
    Von Sway im Forum CGI, Perl, Python, Ruby, Power Shell
    Antworten: 2
    Letzter Beitrag: 14.02.05, 10:46
  5. aus textfile eingelesene var im if skript
    Von doribell im Forum Flash Plattform
    Antworten: 2
    Letzter Beitrag: 02.12.04, 23:17