Eine Verständnisfrage

Status
Nicht offen für weitere Antworten.

the Oracle

Mitglied
Hallo Leute!

Habe ein Problem und müsste es schnell lösen. Bitte helft mir!
Ich habe ein TableModel (abgeleitet von Abstract Table Model) und bekomme immer eine Fehlermeldung.

Code:
public class MyTableModel extends AbstractTableModel
{
    private Object[][] table;
    int rowCount;
    int colCount;
    
    /** Creates a new instance of DateiModell */
    public MyTableModel(Object[] firstRow, int rowCount)
    {
        colCount = firstRow.length;
        this.rowCount = rowCount;
        table = new Object[rowCount][colCount];
        table[0] = firstRow;
    }
    
    public int getColumnCount()
    {
        return colCount;
    }
    
    public int getRowCount()
    {
        return rowCount;
    }
    
    public Object getValueAt(int rowIndex, int columnIndex)
    {
        return table[rowIndex][rowIndex]; //HIER IST LAUT COMPILER DER FEHLER (ArrayIndexOut.....)
    }
    
    public void addRow(Object[] ins) {
        Object[][] tmp = table;
        rowCount++;
        table = new Object[rowCount][colCount];
        for(int i=0; i<tmp.length; i++) {
            if(i==tmp.length+1) {
                table[i] = ins;
            }
            else {
                table[i] = tmp[i];
            }
        }
    }
    
    public void removeRow(int i) {
        Object[][] tmp = table;
        rowCount++;
        table = new Object[rowCount][colCount];
        for(int j=0; j<i; j++) {
            table[j] = tmp[j];            
        }
        for(int j=i; j<table.length; j++) {
            table[j] = tmp[j+1];            
        }
    }
}
Das ist meine TableModell

Doch das setsame ist das der Fehler im HP hier auftritt:

Code:
public static void main(String args[])
    {
        new MyExplorerGUI().show();
       //Nach dem Konstruktoraufruf also hier kommt der Fehler
    }

Bitte sagt mir was der Fehler ist!

Danke
 

mic_checker

Top Contributor
Code:
return table[rowIndex][rowIndex]; //HIER IST LAUT COMPILER DER FEHLER (ArrayIndexOut.....)
Du übergibst der Methode Werte für Zeile/Spalte die außerhalb der zulässigen Grenzen sind, also z.B. versuchst du auf Zeile 23 zuzugreifen, obwohl dein Array nur 5 Zeilen hat (als Beispiel).

Guck halt wo du die Methode aufrufst und überprüf die Indizes.
 

the Oracle

Mitglied
Ich habe es gepostet wo der Fehler liegt und das ist ja das Seltsame.
Es ist nach dem Konstruktoraufruf im Hauptprogramm.
 

dotlens

Top Contributor
du hast aber nicht die kalsse geposted, welche in der main instanziert wird.
und regel nr 1 ist: DIE FEHLERMELDUNG POSTEN.
es nützt nur wenig uns zu sagen wo der Fehlere auftritt, wenn wir nicht wissen was für ein fehler...
 

the Oracle

Mitglied
Hier das MainProgramm (GUI-Klasse)

Code:
/*
 * MyExplorerGUI.java
 *
 * Created on 21. April 2005, 12:47
 */

package Explorer;

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.lang.*;
import java.util.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.table.*;
import javax.swing.tree.*;

/**
 *
 * @author  alle
 */
public class MyExplorerGUI extends javax.swing.JFrame
{
    private DefaultMutableTreeNode dmtn;
    private MyTableModel dtm;
    private String[] tableHead = {"Name", "Größe Byte", "Typ"}; 
    private MyFile curDir;
    private Vector redo;
    private Vector undo;
  
    public MyExplorerGUI()
    {
        try {
            UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName() );
        }
        catch(ClassNotFoundException e) { System.out.println("Fehler im Look&Feel"); }
        catch(InstantiationException e) { System.out.println("Fehler im Look&Feel"); }
        catch(IllegalAccessException e) { System.out.println("Fehler im Look&Feel"); }
        catch(UnsupportedLookAndFeelException e) { System.out.println("Fehler im Look&Feel"); }
        
        JFrame fr = new JFrame("Warten");
        JPanel pa = new JPanel();
        pa.add(new JLabel("Verzeichnisse werden geladen"));
        fr.getContentPane().add(pa);
        fr.show();
        fr.pack();
        
        dtm = new MyTableModel( tableHead, 1);
        dmtn = new DefaultMutableTreeNode("Arbeitsplatz");
        redo = new Vector();
        undo = new Vector();
        laufwerkeLaden(); 
        fr.setVisible(false);
        initComponents();
        
        tVerzeichnis.setModel(dtm);
        tree.setSelectionRow(0);
    }
    
    private void laufwerkeLaden(){
//        File[] roots = new File[File.listRoots().length];
//        for(int i=0; i<File.listRoots().length; i++) {
//            roots[i] = (File)File.listRoots()[i];
//        }
        MyFile[] roots = MyFile.listRootsInEx();
        DefaultMutableTreeNode tmp;
        for(int i=0; i<roots.length; i++) {
            tmp = new DefaultMutableTreeNode(roots[i]);
            dmtn.add(tmp);
            addTableRowData(roots[i]);
            ebenenLaden(tmp, 0, roots[i]);
        }
    }
    
    private void addTableRowData(MyFile f) {
        Object[] tableInsert = new Object[3];
        
        String out = "Datei";
        if(f.isFile()) {
            try {
                StringTokenizer stk = new StringTokenizer(f.getName(),".");
                String s = stk.nextToken();
                s = stk.nextToken();
                out = s+"-"+out;
            }
            catch(NoSuchElementException e) {
                System.out.println("Keine Extension");
            }
        }
        
        tableInsert[0] = f;
        Long l = new Long(f.length());
        tableInsert[1] = l;
        if(f.isDirectory()) 
            tableInsert[2] = "Ordner";
        else
            tableInsert[2] = out;
        
        dtm.addRow(tableInsert);
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    private void initComponents() {
        pmPopUp = new javax.swing.JPopupMenu();
        miDateiLoeschen = new javax.swing.JMenuItem();
        miDateiUmbennen = new javax.swing.JMenuItem();
        jSeparator1 = new javax.swing.JSeparator();
        mNeu = new javax.swing.JMenu();
        miNeuOrdner = new javax.swing.JMenuItem();
        miNeuTxt = new javax.swing.JMenuItem();
        jSeparator2 = new javax.swing.JSeparator();
        miOeffnenTxt = new javax.swing.JMenuItem();
        jSplitPane1 = new javax.swing.JSplitPane();
        spTree = new javax.swing.JScrollPane();
        tree = new JTree(dmtn);
        spVerzeichnis = new javax.swing.JScrollPane();
        tVerzeichnis = new javax.swing.JTable();
        pSymbolleisten = new javax.swing.JPanel();
        pButtons = new javax.swing.JPanel();
        btBack = new javax.swing.JButton();
        btForward = new javax.swing.JButton();
        btDirUp = new javax.swing.JButton();
        pAdresse = new javax.swing.JPanel();
        lbAdresse = new javax.swing.JLabel();
        tfAdresse = new javax.swing.JTextField();
        btWechselnZu = new javax.swing.JButton();
        jMenuBar1 = new javax.swing.JMenuBar();
        mDatei = new javax.swing.JMenu();
        miBeenden = new javax.swing.JMenuItem();
        mTextEditor = new javax.swing.JMenu();
        miTextEditor = new javax.swing.JMenuItem();

        miDateiLoeschen.setText("Datei l\u00f6schen");
        miDateiLoeschen.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                onDateiLoeschen(evt);
            }
        });

        pmPopUp.add(miDateiLoeschen);

        miDateiUmbennen.setText("Datei umbennen");
        miDateiUmbennen.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                onDateiUmbennen(evt);
            }
        });

        pmPopUp.add(miDateiUmbennen);

        pmPopUp.add(jSeparator1);

        mNeu.setText("Neu");
        miNeuOrdner.setText("Ordner");
        miNeuOrdner.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                onNeuOrdner(evt);
            }
        });

        mNeu.add(miNeuOrdner);

        miNeuTxt.setText("Txt-Datei");
        miNeuTxt.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                onNeuTxt(evt);
            }
        });

        mNeu.add(miNeuTxt);

        pmPopUp.add(mNeu);

        pmPopUp.add(jSeparator2);

        miOeffnenTxt.setText("Datei mit Editor \u00f6ffnen");
        miOeffnenTxt.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                onOpenWithEd(evt);
            }
        });

        pmPopUp.add(miOeffnenTxt);

        setTitle("MyExplorer");
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

        spTree.setPreferredSize(new java.awt.Dimension(150, 322));
        tree.addTreeExpansionListener(new javax.swing.event.TreeExpansionListener() {
            public void treeCollapsed(javax.swing.event.TreeExpansionEvent evt) {
            }
            public void treeExpanded(javax.swing.event.TreeExpansionEvent evt) {
                onExpanded(evt);
            }
        });
        tree.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {
            public void valueChanged(javax.swing.event.TreeSelectionEvent evt) {
                onTree(evt);
            }
        });

        spTree.setViewportView(tree);

        jSplitPane1.setLeftComponent(spTree);

        spVerzeichnis.setPreferredSize(new java.awt.Dimension(350, 130));
        tVerzeichnis.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        tVerzeichnis.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                onTVerzeichnisClick(evt);
            }
        });

        spVerzeichnis.setViewportView(tVerzeichnis);

        jSplitPane1.setRightComponent(spVerzeichnis);

        getContentPane().add(jSplitPane1, java.awt.BorderLayout.CENTER);

        pSymbolleisten.setLayout(new java.awt.GridLayout(2, 0));

        pButtons.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));

        btBack.setText("<=");
        btBack.setToolTipText("");
        btBack.setActionCommand("-1");
        btBack.setEnabled(false);
        btBack.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                onReDo(evt);
            }
        });

        pButtons.add(btBack);

        btForward.setText("=>");
        btForward.setActionCommand("1");
        btForward.setEnabled(false);
        btForward.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                onReDo(evt);
            }
        });

        pButtons.add(btForward);

        btDirUp.setText("/\\");
            btDirUp.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    onDirUp(evt);
                }
            });

            pButtons.add(btDirUp);

            pSymbolleisten.add(pButtons);

            pAdresse.setLayout(new java.awt.BorderLayout());

            pAdresse.setPreferredSize(new java.awt.Dimension(111, 15));
            lbAdresse.setText("Adresse");
            pAdresse.add(lbAdresse, java.awt.BorderLayout.WEST);

            tfAdresse.setText("Arbeitsplatz");
            tfAdresse.setPreferredSize(new java.awt.Dimension(69, 15));
            pAdresse.add(tfAdresse, java.awt.BorderLayout.CENTER);

            btWechselnZu.setText("=> Wechseln zu");
            pAdresse.add(btWechselnZu, java.awt.BorderLayout.EAST);

            pSymbolleisten.add(pAdresse);

            getContentPane().add(pSymbolleisten, java.awt.BorderLayout.NORTH);

            mDatei.setText("Datei");
            miBeenden.setText("Ende");
            miBeenden.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    onEnde(evt);
                }
            });

            mDatei.add(miBeenden);

            jMenuBar1.add(mDatei);

            mTextEditor.setText("TextEditor");
            miTextEditor.setText("Editor \u00f6ffnen");
            miTextEditor.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    onOpenEditor(evt);
                }
            });

            mTextEditor.add(miTextEditor);

            jMenuBar1.add(mTextEditor);

            setJMenuBar(jMenuBar1);

            pack();
        }

    private void onTVerzeichnisClick(java.awt.event.MouseEvent evt) {
        try {
            if(evt.getButton() == MouseEvent.BUTTON1) {
                int sel = tVerzeichnis.getSelectedRow();
                MyFile tmp = (MyFile)dtm.getValueAt(sel,0);   
                if (evt.getClickCount() == 2) {
                    if(tmp.isDirectory()) {
                        curDir = tmp;
                        
                        DefaultMutableTreeNode help = (DefaultMutableTreeNode)tree.getSelectionPath().getLastPathComponent();
                        
                        int i = 0;
                        for (i=0; i<help.getChildCount(); i++) {
                            if ( tmp.equals((MyFile)((DefaultMutableTreeNode)help.getChildAt(i)).getUserObject()) ) {
                                help = (DefaultMutableTreeNode)help.getChildAt(i);
                                break;
                            }
                        }
                        
                        if(help.getDepth()<2)
                            ebenenLaden(help,1,(MyFile)help.getUserObject()); 
                        tree.setSelectionPath(new TreePath(help.getPath()));
                        
                        openFilesInList(tmp);
                        setTitle(tmp.getAbsolutePath());
                    }
                    
                    if(tmp.isFile()) {
                        StringTokenizer stk = new StringTokenizer(tmp.getName(),".");
                        String s = stk.nextToken();
                        s = stk.nextToken();
                        if(s.equalsIgnoreCase("txt")) {
                            EditorGUI ed = new EditorGUI(tmp);
                            ed.load();
                            ed.show();
                        }
                        else
                            Runtime.getRuntime().exec("rundll32.exe url.dll,FileProtocolHandler "+tmp.getAbsolutePath());
                    }
                }
            }
            else {
                if(tVerzeichnis.getSelectedRow()==-1) {
                    miDateiLoeschen.setVisible(false);
                    miDateiUmbennen.setVisible(false);
                    miOeffnenTxt.setVisible(false);
                    pmPopUp.show(this, evt.getX(), evt.getY());
                }
                else {
                    miDateiLoeschen.setVisible(true);
                    miDateiUmbennen.setVisible(true);
                    if( ((MyFile)tVerzeichnis.getValueAt(tVerzeichnis.getSelectedRow(),0)).isFile() ) {
                        miOeffnenTxt.setVisible(true);
                    }
                    pmPopUp.show(this, evt.getX(), evt.getY());
                }
            }
        }
        catch(IOException e) {
            System.out.println("Fehler beim Ausführen einer Datei");
        }
        catch(NullPointerException e) {
            System.out.println("Kann nicht ausgewählt werden");
        }
    }

    private void onOpenWithEd(java.awt.event.ActionEvent evt) {
        int sel = tVerzeichnis.getSelectedRow();
        MyFile tmp = (MyFile)dtm.getValueAt(sel,0);
        EditorGUI ed = new EditorGUI(tmp);
        ed.load();
        ed.show();
    }

    private void onDirUp(java.awt.event.ActionEvent evt) {
        if(curDir.getParentFile()!=null) {   
            tree.setSelectionPath(tree.getSelectionPath().getParentPath()); 
            if( ((DefaultMutableTreeNode)tree.getSelectionPath().getLastPathComponent()).getParent() == null) {
                curDir = null;
                btDirUp.setEnabled(false);
                int i=dtm.getRowCount()-1;
                while(i>=0) {
                    dtm.removeRow(i);
                    i--;
                }
                MyFile[] files = MyFile.listRootsInEx();
                for(i=0; i<files.length; i++) {
                    addTableRowData(files[i]);
                } 

                //Redo hinzufürgen
                    if(redo.size() == 0 || (TreePath)redo.elementAt(redo.size()-1)!= tree.getSelectionPath()) {
                        redo.add(tree.getSelectionPath());
                        btBack.setEnabled(true);   
                    }
            }
            else {
                curDir = curDir.getParentFileInEx();
                openFilesInList(curDir);
            }
        }
    }

    private void onReDo(java.awt.event.ActionEvent evt) {
        if(Integer.parseInt(evt.getActionCommand()) < 0) {
            if( ((DefaultMutableTreeNode)tree.getSelectionPath().getLastPathComponent()).getParent() == null) {
                curDir = null;
                btDirUp.setEnabled(false);
                int i=dtm.getRowCount()-1;
                while(i>=0) {
                    dtm.removeRow(i);
                    i--;
                }
                MyFile[] files = MyFile.listRootsInEx();
                for(i=0; i<files.length; i++) {
                    addTableRowData(files[i]);
                }
                
                tree.setSelectionPath((TreePath)redo.elementAt(redo.size()-1));
            }
            else {
                tree.setSelectionPath((TreePath)redo.elementAt(redo.size()-1));
                openFilesInList(curDir);
            }
            
            undo.add((TreePath)redo.remove(redo.size()-1));
            btForward.setEnabled(true);
            if(redo.size()==0) 
                btBack.setEnabled(false);
        }
        if(Integer.parseInt(evt.getActionCommand()) > 0) {
            tree.setSelectionPath((TreePath)undo.elementAt(undo.size()-1));
            redo.add((TreePath)undo.remove(undo.size()-1));
            btBack.setEnabled(true);
            if(undo.size()==0) 
                btForward.setEnabled(false);
        }
    }

    private void onNeuTxt(java.awt.event.ActionEvent evt) {
        try{    
            MyFile newTxt = new MyFile(curDir.getPath(), JOptionPane.showInputDialog(this, "Name eingeben")+".txt");
            FileWriter fw = new FileWriter(newTxt); 
            BufferedWriter bw = new BufferedWriter(fw);
            bw.write("");
            bw.close();
        }
        catch(IOException e) {
            System.out.println("Fehler beim Erzeugen");
        }
        openFilesInList(curDir);
    }

    private void onNeuOrdner(java.awt.event.ActionEvent evt) {
        MyFile newDir = new MyFile(curDir.getPath(), JOptionPane.showInputDialog(this, "Name eingeben"));
        newDir.mkdir();
        ((DefaultMutableTreeNode)tree.getSelectionPath().getLastPathComponent()).add(new DefaultMutableTreeNode(newDir));
        openFilesInList(curDir);
    }

    private void onDateiUmbennen(java.awt.event.ActionEvent evt) {
        int sel = tVerzeichnis.getSelectedRow();
        MyFile tmp = (MyFile)dtm.getValueAt(sel,0);  
        tmp.renameTo(new MyFile(tmp.getParent(),JOptionPane.showInputDialog(this, "Neuen Namen eingeben:")));
        openFilesInList(tmp.getParentFileInEx());
    }

    private void onDateiLoeschen(java.awt.event.ActionEvent evt) {
        if(JOptionPane.showConfirmDialog(this, "Wirklich löschen", "Abfrage", JOptionPane.OK_CANCEL_OPTION) == JOptionPane.OK_OPTION) {
            int sel = tVerzeichnis.getSelectedRow();
            MyFile tmp = (MyFile)dtm.getValueAt(sel,0);  
            tmp.delete();
            openFilesInList(tmp.getParentFileInEx());
        }
    }

    private void onExpanded(javax.swing.event.TreeExpansionEvent evt) {
        try {
            DefaultMutableTreeNode help = (DefaultMutableTreeNode)evt.getPath().getLastPathComponent();
            MyFile f = (MyFile)help.getUserObject();
            curDir = f;
            openFilesInList(f);
            if(help.getDepth()<2) {
                ebenenLaden(help,1,f);
                setTitle(f.getAbsolutePath());
            }
        }
        catch(ClassCastException e) {
            System.out.println("Kein File");
        }  
        catch(NullPointerException e) {
            System.out.println("Konnte Datei nicht laden");
        }
    }

    private void ebenenLaden(DefaultMutableTreeNode dmtn, int ebene, MyFile dir) {
        if(ebene<2) {
            if(dir.isDirectory()) {
                MyFile[] files = dir.listFilesInEx();
                DefaultMutableTreeNode tmp;
                int zweiteE = ebene++;
                for(int i=0; i<files.length; i++) {
                    if (files[i].isDirectory()) {
                       try { 
                            tmp = new DefaultMutableTreeNode(files[i]);
                            dmtn.add(tmp);
                            ebenenLaden(tmp, zweiteE, files[i]);
                       }
                       catch(NullPointerException e) {
                           System.out.println("Konnte "+ files[i].toString() +" nicht laden");
                       }
                    }
                }
                
            }
        }
    }
     
    private void openFilesInList(MyFile f) {
        int i=dtm.getRowCount()-1;
        while(i>=0) {
            dtm.removeRow(i);
            i--;
        }
        MyFile[] files = f.listFilesInEx();
        for(i=0; i<files.length; i++) {
            addTableRowData(files[i]);
        } 
            
        //Redo hinzufürgen
            if(redo.size() == 0 || (TreePath)redo.elementAt(redo.size()-1)!= tree.getSelectionPath()) {
                redo.add(tree.getSelectionPath());
                btBack.setEnabled(true);   
            }
    }
    
    private void onTree(javax.swing.event.TreeSelectionEvent evt) {
        try {
            DefaultMutableTreeNode help = (DefaultMutableTreeNode)evt.getPath().getLastPathComponent();
            MyFile f = (MyFile)help.getUserObject();
            curDir = f;
            //Files anzeigen
            openFilesInList(f);
            setTitle(f.getAbsolutePath());
            
            if(help.getDepth()<2) {
                //Weitere Ebenen laden
                ebenenLaden(help,1,f);
            }
        }
        catch(ClassCastException e) {
            System.out.println("Kein File");
        }  
        catch(NullPointerException e) {
            System.out.println("Konnte Datei nicht laden");
        }
    }

    private void onOpenEditor(java.awt.event.ActionEvent evt)
    {
        EditorGUI ed = new EditorGUI(null);
        ed.show();
    }

    private void onEnde(java.awt.event.ActionEvent evt)
    {
        System.exit(0);
    }
    
    /** Exit the Application */
    private void exitForm(java.awt.event.WindowEvent evt)
    {
        System.exit(0);
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[])
    {
        new MyExplorerGUI().show();
    }
    
    // Variables declaration - do not modify
    private javax.swing.JButton btBack;
    private javax.swing.JButton btDirUp;
    private javax.swing.JButton btForward;
    private javax.swing.JButton btWechselnZu;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JSeparator jSeparator1;
    private javax.swing.JSeparator jSeparator2;
    private javax.swing.JSplitPane jSplitPane1;
    private javax.swing.JLabel lbAdresse;
    private javax.swing.JMenu mDatei;
    private javax.swing.JMenu mNeu;
    private javax.swing.JMenu mTextEditor;
    private javax.swing.JMenuItem miBeenden;
    private javax.swing.JMenuItem miDateiLoeschen;
    private javax.swing.JMenuItem miDateiUmbennen;
    private javax.swing.JMenuItem miNeuOrdner;
    private javax.swing.JMenuItem miNeuTxt;
    private javax.swing.JMenuItem miOeffnenTxt;
    private javax.swing.JMenuItem miTextEditor;
    private javax.swing.JPanel pAdresse;
    private javax.swing.JPanel pButtons;
    private javax.swing.JPanel pSymbolleisten;
    private javax.swing.JPopupMenu pmPopUp;
    private javax.swing.JScrollPane spTree;
    private javax.swing.JScrollPane spVerzeichnis;
    private javax.swing.JTable tVerzeichnis;
    private javax.swing.JTextField tfAdresse;
    private javax.swing.JTree tree;
    // End of variables declaration
    
}

Die Model-Klasse habe ich schon gepostet

Hier die komplette Fehlermeldung:
Konnte Birgit nicht laden
Konnte System Volume Information nicht laden
Kein File
java.lang.ArrayIndexOutOfBoundsException: 3
at Explorer.MyTableModel.getValueAt(MyTableModel.java:42)
at javax.swing.JTable.getValueAt(JTable.java:1771)
at javax.swing.JTable.prepareRenderer(JTable.java:3724)
at javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:1149)
at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:1051)
at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:974)
at javax.swing.plaf.ComponentUI.update(ComponentUI.java:142)
at javax.swing.JComponent.paintComponent(JComponent.java:541)
at javax.swing.JComponent.paint(JComponent.java:808)
at javax.swing.JComponent.paintChildren(JComponent.java:647)
at javax.swing.JComponent.paint(JComponent.java:817)
at javax.swing.JViewport.paint(JViewport.java:722)
at javax.swing.JComponent.paintChildren(JComponent.java:647)
at javax.swing.JComponent.paint(JComponent.java:817)
at javax.swing.JComponent.paintChildren(JComponent.java:647)
at javax.swing.JSplitPane.paintChildren(JSplitPane.java:1021)
at javax.swing.JComponent.paint(JComponent.java:817)
at javax.swing.JComponent.paintChildren(JComponent.java:647)
at javax.swing.JComponent.paint(JComponent.java:817)
at javax.swing.JComponent.paintChildren(JComponent.java:647)
at javax.swing.JComponent.paint(JComponent.java:817)
at javax.swing.JLayeredPane.paint(JLayeredPane.java:557)
at javax.swing.JComponent.paintChildren(JComponent.java:647)
at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4794)
at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4740)
at javax.swing.JComponent.paint(JComponent.java:798)
at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:21)
at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:60)
at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:97)
at java.awt.Container.paint(Container.java:1312)
at sun.awt.RepaintArea.paint(RepaintArea.java:177)
at sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:260)
at java.awt.Component.dispatchEventImpl(Component.java:3678)
at java.awt.Container.dispatchEventImpl(Container.java:1627)
at java.awt.Window.dispatchEventImpl(Window.java:1606)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)

Das Programm ladet alles!! Doch wie die GUI erscheint kommen diese Fehlermeldungen


Sorry das es so lang ist :oops:
 

dotlens

Top Contributor
den Fehler hat mic_Checker schon erklärt. du versuchst auf Teile eines Arrays zuzugreifen, welche nicht existieren.
 

dotlens

Top Contributor
die werte sind im model gespeichert.
deine oberfläche holt mit getValueAT die Daten und zeigt sie an.
 

the Oracle

Mitglied
Ach so ein blöder Fehler!
Doch ein Problem gibt es noch:
Er zeigt mir in den Zellen nicht den Text von den MyFile's nicht.

Danke*
 

dotlens

Top Contributor
musst du schauen, dass deine Daten richtig ins model kommen, ev neuen Thread aufmachen.
hab jetzt keine zeit mehr. abend
 

the Oracle

Mitglied
das mit dem Anzeigen klappt doch (angezeigt wird das von getValueAt(...)). doch wenn ich die rows nun lösche und neue anzeigen will, aktualisiert er mir die table nicht
 

the Oracle

Mitglied
bin schon selbst draufgekommen.
Man ruft einfach nach dem ändern des Tabelleninhaltes die Methode

this.fireTableDataChanged();

in der Modelklasse auf.

Danke für die Hilfe
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zrebna Aus einer jar-Datei eine exe-Datei erzeugen lassen Allgemeine Java-Themen 37
KonradN Mal eine Frage zu Binary Serialization Allgemeine Java-Themen 15
D Hat Java eine Library um JavaScript auszuwerten? Allgemeine Java-Themen 2
dokan wie kann ich eine funktionierende Suchleiste erstellen Allgemeine Java-Themen 1
B Wie erstelle ich dazu eine Abfrage ob der Button gedrückt wurde? Allgemeine Java-Themen 8
J Integration pay Pale in eine JavaFx Desktop Application Allgemeine Java-Themen 1
berserkerdq2 Wenn ich einfach eine GIF in den Scenebuilder als Bild reinpacke, wird das dann asl Gif angezeigt Allgemeine Java-Themen 1
8u3631984 Strukturiertes Logging : Jedes Feld in eine seperate Zeile - aber wie ? Allgemeine Java-Themen 2
berserkerdq2 Gibt es eine saubere Dokumentation von Jfoenix? Allgemeine Java-Themen 1
M Eigene Datenstruktur um eine Menge zu speichern Allgemeine Java-Themen 3
A Wie schreibe ich eine For-Schleife in ein Stream API um? Allgemeine Java-Themen 12
E Es ist nicht möglich, eine Batch-Anweisung auszuführen. Allgemeine Java-Themen 9
T Eine Frage des Designs Allgemeine Java-Themen 2
R Best Practice Erfahrungswerte für eine Migration von JSF nach Angular (oder anderes JS-Framework) Allgemeine Java-Themen 1
H Eine Linie verkürzen Allgemeine Java-Themen 5
N rekursion mehrfach eine Methode Öffnen Allgemeine Java-Themen 4
berserkerdq2 Wenn ich eine Methode nur jede 50ms ausführen will, wie mach ich das? Allgemeine Java-Themen 4
berserkerdq2 Wie synchronisiere ich eine for-Schleife Allgemeine Java-Themen 12
berserkerdq2 Wie mache ich in IJVM eine if verzweigung? Allgemeine Java-Themen 27
F Gibt es mittlerweile eine Alternative zu DaisyDiff Allgemeine Java-Themen 2
_user_q Was brauche ich, um eine eigene "Search for updates"-Funktion einzubauen? Allgemeine Java-Themen 1
E Eine Methode einer extendeten Klasse deakitivieren Allgemeine Java-Themen 12
LimDul Kam eine java.net.URL zu einer HashMap und ging als DNS Anfrage wieder heraus Allgemeine Java-Themen 18
pizza_dox_9999 Wie füge ich eine "eigene" ScriptEngine dem ScriptEngineManager? Allgemeine Java-Themen 3
F Kennt ihr eine Library um 2 HTML Seiten zu diffen? Allgemeine Java-Themen 8
Y ImagePanel von anderer Klasse in eine MainFrame Klasse hinzufügen. Allgemeine Java-Themen 1
OnDemand Anzeigen was eine Applikation macht Allgemeine Java-Themen 1
T Problem beim Umwandeln in eine Jar-Datei Allgemeine Java-Themen 3
J Eine Frage zu den Threads und Task Allgemeine Java-Themen 1
Tobero Wie bekomme ich in welchem Quadrat sich eine Position in einem Grid befindet Allgemeine Java-Themen 11
Tobero Wie kann man eine Poisson Disc Sampler? Allgemeine Java-Themen 7
M Openjdk - gibt es auch eine Openjre? Allgemeine Java-Themen 7
R Lambda Expression in einer Methode execute() aufrufen (execute() ist eine Methode aus dem funktionalen Interface Command) Allgemeine Java-Themen 5
S Noch eine Design-Frage zu Setter Allgemeine Java-Themen 6
N Arrayliste in eine Datei speichern Allgemeine Java-Themen 4
J Öffnen eine jar-Datei Allgemeine Java-Themen 11
Zrebna Gibt es eine Möglichkeit eine NPE zu vermeiden, wenn null returned wird? Allgemeine Java-Themen 3
S Klassen Einfügen von unbekannter menge an Variablen in eine Klasse mithilfe von ASM Allgemeine Java-Themen 5
R Wo müsste ich im Code eine Änderung vornehmen? Allgemeine Java-Themen 6
S Rückgabe einer HttpURLConnection für eine Seite einlesen bei der man eingeloggt ist..? Allgemeine Java-Themen 5
S Gibt es eine Moeglichkeit die Runtime Ausführung zu analysieren..? Allgemeine Java-Themen 7
S Habt ihr eine Idee wie man Serializierung testen kann..? Allgemeine Java-Themen 6
S Wenn eine Klasse zwei Interfaces mit derselben Methodensignatur implementiert: welche wird aufgerufen? Allgemeine Java-Themen 15
Drachenbauer warum bekomme ich hier eine NullPointerException Allgemeine Java-Themen 6
M Gibt es eine API die den aktuellen Wert eines Indikators beim Trading zurückgibt? Allgemeine Java-Themen 7
X Collections Gibt es eine Klasse welche die Vorteile von List und HashMap vereint, aber konstante Laufzeit (O(1)) hat in Java? Allgemeine Java-Themen 4
N Eine stelle der Fibonacci-Zahlenfolge ausgeben. Allgemeine Java-Themen 4
E Hat der Compiler einen Fehler oder warumbeendet return nicht eine Methode ? Allgemeine Java-Themen 7
W Collections Suche etwas Sorted-List-Artiges...hat jemand eine Idee? Allgemeine Java-Themen 13
L Methoden Über Reflections eine Methode mit aufrufen Allgemeine Java-Themen 3
S Kann ich eine Methode schreiben die alle Arten von funktionalen Interfaces akzeptiert..? Allgemeine Java-Themen 21
Drachenbauer Wie kann eine vorgegebene Farbe über einen String erkannt werden? Allgemeine Java-Themen 11
J Datenstruktur für eine Map erstellen Allgemeine Java-Themen 2
sascha-sphw Java 9 module Zugriff auf eine resource einer anderen JAR Allgemeine Java-Themen 0
pkm Kann eine ServerSocket-Klasse nicht stateful sein? Allgemeine Java-Themen 4
B Aufruf der Methode ergibt eine Exception Allgemeine Java-Themen 13
I Eine Anwendung so gut wie möglich beschützen Allgemeine Java-Themen 9
M Wie kann man eine void Methode mit Variablen von zwei verschiedenen Objekten ausführen? Allgemeine Java-Themen 15
X Wie mache ich hier eine Rekursion rein ? Allgemeine Java-Themen 7
K OOP Suche Hilfe + Erklärung für eine Hausaufgabe Allgemeine Java-Themen 1
N Über einen Button in JavaFX ein Event über eine Pipeline schicken(Netty) Allgemeine Java-Themen 1
M Login in eine Webseite mit Java Allgemeine Java-Themen 3
A NetBeans Suche Programmierer für eine Belegarbeit Allgemeine Java-Themen 11
D Warum kann ich eine (deflaut) Klasse aus einer Libary in einem anderen Projekt benutzen? Allgemeine Java-Themen 3
L Übergabe an eine eher einfache Java- Applikation wegen Kündigung Allgemeine Java-Themen 1
C Ein Iterator ist eine Implementierung des Interface Iterable? Allgemeine Java-Themen 2
M Schlüsselworte Was ist eine Java Spezifikation + JSR? Allgemeine Java-Themen 11
E RMI NULL-Pointer-Exeception wenn der RMI-Proxy eine Methode deligiert Allgemeine Java-Themen 2
E RMI FWH: RMI- Wie erstelle ich stubs dynamisch, bzw. unterdrücke eine Statisch-Warnung? Allgemeine Java-Themen 0
J Eine bestimmte Zahl im Integer ändern Allgemeine Java-Themen 9
Q-bert Strings aus der JList in eine Datenbank speichern Allgemeine Java-Themen 1
D Möglichkeit mit GAE eine Table auszulesen und eine csv zu schreiben Allgemeine Java-Themen 22
S Korrekte Pfadangaben damit eine .jar Datei unter Windwos läuft. Allgemeine Java-Themen 24
D Eine Forschleife mit Threads abarbeiten um es zu schneller zu machen. Ist das möglich? Allgemeine Java-Themen 20
S Wie kann ich eine kleine Stelle in meinem Code mit multiplen Threads abarbeiten..? Allgemeine Java-Themen 20
B Gibt es eine Funktion die den Datentyp einer Variablen ermittelt? Allgemeine Java-Themen 8
R bei eclipse von java in eine andere programmiersprache wechseln? Allgemeine Java-Themen 2
D Pivot-Wahl beim QuickSort steigert die Effizienz, eine Lüge??? Allgemeine Java-Themen 17
C Eclipse einstellen, dass eine bestimmte JDK benutzt werden soll Allgemeine Java-Themen 3
M Klassen Eine Klasse in mehreren Klassen einbinden Allgemeine Java-Themen 11
A Best Practice Java - eine Art Plugin-Struktur Allgemeine Java-Themen 3
S wie rufe ich mit .jar datei eine .bat auf? Allgemeine Java-Themen 15
R Signatur von Methoden in eine Datei schreiben? Allgemeine Java-Themen 4
perlenfischer1984 Functionsparameter prüfen und eine Exception werfen !? Allgemeine Java-Themen 11
J Mehrere Wörter getrennt in eine Array einlesen, wie ? Allgemeine Java-Themen 7
E Methoden Hat jemand eine gute Lösung? Allgemeine Java-Themen 5
Z NullPointerException beim Schreiben einer ArrayList in eine Datei Allgemeine Java-Themen 6
Exdroid BlueJ Wie bekomme ich die Ausgabe in eine TXT Datei? Allgemeine Java-Themen 2
G Methoden Aus einem Event, wo ich weiß, dass es ausgeführt werden wird, eine Get-Methode basteln Allgemeine Java-Themen 8
F Wie kann ich auf einem System prüfen, ob eine lib verfügbar ist? Allgemeine Java-Themen 2
Tausendsassa Interface Eine Gui von einer anderen schließen lassen Allgemeine Java-Themen 3
S Threads Kann mir jemand helfen eine parallele Hilfsklasse zu implementieren..? Allgemeine Java-Themen 3
S Best Practice Brauche eine Idee für eine Java Projekt! Allgemeine Java-Themen 11
P Zwei ArrayLists: Ohne die eine überhaupt anzurühren, wird sie verändert Allgemeine Java-Themen 2
M Eine Datei im Speicher erneut laden(?) Allgemeine Java-Themen 1
V Gibt es eine Möglichkeit die Internet auslastung mit Java auszulesen Allgemeine Java-Themen 11
L Drop Emails von Outlook in eine JList Allgemeine Java-Themen 5
P Wie funktioniert das Feedback eines Klicks auf eine Java GUI Allgemeine Java-Themen 10
P Dezimalzahl in eine Binärzahl umrechnen Allgemeine Java-Themen 12
M Eine static-Methode verlassen Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben