10. marts 2003 - 08:42
Der er
5 kommentarer og 2 løsninger
"køre" en fil java JTabel ??
Jeg sidder med en tabel hvori der er filnavne fra HD, og jeg ønsker at kunne starte de forskellige programmer fra filsystemet, men hvilken kommando skal jeg bruge for at eksekverer filer i java ??
Annonceindlæg fra Barco
10. marts 2003 - 09:47
#1
Eksekvering sker med Runtime.getRuntime().exec("filnavn.exe");
10. marts 2003 - 09:54
#2
Jeg har prøvet og det virker også fint med exefiler, men med andre filer får jeg denne exception ?? java.io.IOException: CreateProcess: c:\WINNT\clock.avi error=193
10. marts 2003 - 10:00
#3
Prøver du at kalde en .avi-fil direkte?
10. marts 2003 - 10:03
#4
Jeg får hele stien til den specifikke fil sådan her: String str = "" + fil.getFile(); Runtime.getRuntime().exec(str); Burde den så ikke selv finde ud af at køre det som en fx. avi eller txt-fil
10. marts 2003 - 10:42
#5
Brug cmd: // TestFrame.java: import javax.swing.*; import java.awt.event.*; import java.io.*; public class TestFrame extends JFrame { private JTable table; private FileTableModel tableModel; private File file; public TestFrame() { super("File Test"); setSize(400,400); file = new File("C:/"); tableModel = new FileTableModel(file); table = new JTable(tableModel); table.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent event) { if( event.getClickCount() == 2 ) { if( table.getSelectedRow() == 0 ) { if( file.getParentFile() != null ) explore( file = file.getParentFile() ); } else { file = tableModel.getFile(table.getSelectedRow()); if( file.isDirectory() ) { explore(file); } else { String filename = file.getAbsolutePath(); try { Runtime.getRuntime().exec("cmd /c "+filename); } catch(IOException ioe) { ioe.printStackTrace(); } } } } } }); setContentPane(new JScrollPane(table)); } private void explore(File file) { tableModel.setRoot(file); } } class TestIt { public static void main(String[] args) { new TestFrame().show(); } } // FileTableModel.java: import javax.swing.table.AbstractTableModel; import java.io.File; public class FileTableModel extends AbstractTableModel { private String[] columns = { "Filnavn", "Størrelse", "Type" }; private File root; private String goBack = "Tilbage..."; public FileTableModel(File root) { this.root = root; } public int getColumnCount() { return columns.length; } public int getRowCount() { return (root.listFiles().length+1); } public String getColumnName(int column) { return columns[column]; } public Object getValueAt(int row, int column) { if( row == 0 ) { if( column == 0 ) return goBack; else return ""; } if( column == 0 ) { return root.listFiles()[row-1].getName(); } else if( column == 1 ) { return new Long(root.listFiles()[row-1].length()); } else if( column == 2 ) { if( root.listFiles()[row-1].isDirectory() ) return "Directory"; else return "File"; } return null; } public Class getColumnClass(int column) { return getValueAt(0, column).getClass(); } public boolean isCellEditable(int row, int column) { return false; } public void setValueAt(Object value, int row, int column) { switch( column ) { case 0: { // nada } break; case 1: { // nada } break; case 2: { // nada } break; } fireTableCellUpdated(row, column); } public File getFile(int row) { return root.listFiles()[row-1]; } public void setRoot(File root) { fireTableRowsDeleted(0, root.list().length); this.root = root; } }
10. marts 2003 - 11:22
#6
Det tror jeg ikke kan lade sig gøre direkte - prøv med en .batfil, hvori du skriver dine kommandoer, og så kald den istedet.
10. marts 2003 - 11:44
#7
Nu virker det, I får halvdelen hver, tak for hjælpen.
Kurser inden for grundlæggende programmering