Hinzufügen ausgewählter Dateinen des Filechoosers zu einem JTable

Ghostman1711

Mitglied
Hallo,
Wie kann ich durch einen Filechooser ausgewählte Dateinen zu einem JTablehinzufügen lassen mit Name und Pfad??
Eveltuell wie ich diese auch wieder löschen kann

MFG
Ghostman
 
Also im Prinzip funtzt das alles nur ich kann die einträge nichtmehr löschen.
Vllt kannst du mir dabei helfen.

Ghostman

Java:
public class Test {

   // Frame
   static JFrame frmNeuerAuftrag;

   // Strings
   static int selected_row1;
   static String selected_row2;

   // JTables
   static JTable filelist_table;


   // JScrollPane
   static JScrollPane filelist_scrollplane;


   // JButtons
   static JButton send;
   static JButton btn_fileauswahl;
   static JButton btn_fieldelete;

  
   public Test() {
     initialize();

     EventQueue.invokeLater(new Runnable() {
       @Override
       public void run() {
         try {
         } catch (Exception e) {
           e.printStackTrace();
         }
       }
     });
   }

   private void initialize() {
     frmNeuerAuftrag = new JFrame();
     frmNeuerAuftrag.setIconImage(
         Toolkit.getDefaultToolkit().getImage(Test.class.getResource("/drawable/icon.png")));
     frmNeuerAuftrag.getContentPane().setFont(new Font("SansSerif", Font.PLAIN, 15));
     frmNeuerAuftrag.setFont(new Font("Arial", Font.PLAIN, 15));
     frmNeuerAuftrag.setVisible(true);
     frmNeuerAuftrag.setTitle("Anfrage");

     filelist_table = new JTable(new DefaultTableModel(new Object[][] {}, new String[] { "Name", "Pfad" }));
     filelist_table.setSurrendersFocusOnKeystroke(true);
     filelist_table.setShowHorizontalLines(true);
     filelist_table.setFont(new Font("SansSerif", Font.PLAIN, 15));
     filelist_table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
     filelist_table.setMinimumSize(new Dimension(150, 0));
     filelist_table.setMaximumSize(new Dimension(2147483647, 1000000000));
     filelist_table.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
     filelist_scrollplane.setViewportView(filelist_table);
     DefaultTableModel tableModel = (DefaultTableModel) filelist_table.getModel();
    
     filelist_table.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
    public void valueChanged(ListSelectionEvent event) {
    // do some actions here, for example
    // print first column value from selected row
       btn_fieldelete.setVisible(true);
      
    System.out.println(filelist_table.getValueAt(filelist_table.getSelectedRow(), 0).toString());
    System.out.println(filelist_table.getValueAt(filelist_table.getSelectedRow(), 1).toString());
    selected_row1 = filelist_table.getSelectedRow();
    }
    });

     btn_fileauswahl = new JButton("Hinzuf\u00FCgen");
     btn_fileauswahl.setFont(new Font("SansSerif", Font.PLAIN, 15));
     btn_fileauswahl.addActionListener(new ActionListener() {
       @Override
       public void actionPerformed(ActionEvent arg0) {
         JFileChooser chooser = new JFileChooser();

         chooser.showDialog(null, "Datei auswählen...");
         chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
         String filename = chooser.getSelectedFile().getName();
         String filepath = chooser.getSelectedFile().getAbsolutePath();
         System.out.println(chooser.getSelectedFile().getAbsolutePath());
         tableModel.addRow(new Object[] { filename, filepath });
       }
     });

     btn_fieldelete = new JButton("L\u00F6schen");
     btn_fieldelete.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent arg0) {
         //Remove muss hier rein
       }
     });
     btn_fieldelete.setVisible(false);
     btn_fieldelete.setFont(new Font("SansSerif", Font.PLAIN, 15));
     frmNeuerAuftrag.getContentPane().add(btn_fieldelete, "cell 6 5");
    
     frmNeuerAuftrag.getContentPane().add(btn_fileauswahl, "cell 5 5,alignx left,growy");

   }
}
Das:
 
Zuletzt bearbeitet:
Die Klasse "Table" bietet eine Methode "getSelectedRow" und die Klasse DefaultTableModel eine Methode "removeRow" an 😉
 
Code:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1
    at java.util.Vector.elementData(Unknown Source)
    at java.util.Vector.elementAt(Unknown Source)
    at javax.swing.table.DefaultTableModel.getValueAt(Unknown Source)
    at javax.swing.JTable.getValueAt(Unknown Source)
    at magager.neuer_auftrag$3.valueChanged(neuer_auftrag.java:352)
    at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
    at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
    at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)
    at javax.swing.DefaultListSelectionModel.removeIndexInterval(Unknown Source)
    at javax.swing.JTable.tableRowsDeleted(Unknown Source)
    at javax.swing.JTable.tableChanged(Unknown Source)
    at javax.swing.table.AbstractTableModel.fireTableChanged(Unknown Source)
    at javax.swing.table.AbstractTableModel.fireTableRowsDeleted(Unknown Source)
    at javax.swing.table.DefaultTableModel.removeRow(Unknown Source)
    at magager.neuer_auftrag$5.actionPerformed(neuer_auftrag.java:377)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$500(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

Diesen Error Log
 
Die Fehlermeldung sollte doch selbsterklärend sein 😉
Du willst auf Index "-1" zugreifen, welchen es natürlich nicht gibt.

Der StackTrace verrät dir genau in welcher Zeile deines Code der Fehler passiert at magager.neuer_auftrag$3.valueChanged(neuer_auftrag.java:352)
Einfach dort nachschauen warum es zu so einem Fehler kommen kann.
Tipp: Was willst du ausgeben wenn keine Zeilen in deiner Tabelle sind? 😉
 

Neue Themen


Zurück
Oben