📄 tablefeld.java
字号:
import java.awt.* ;import java.awt.event.* ;import java.io.* ;import java.text.* ;import java.util.* ;import javax.swing.* ;import javax.swing.event.* ;import javax.swing.table.* ;public class TableFeld extends JPanel { HJTable table ; // AbstractTableModel dataModel; HTableModel dataModel ; Explorer ex ; public TableFeld( Explorer ex ) { this.ex = ex ; dataModel = new HTableModel() ; setLayout( new BorderLayout() ) ; table = new HJTable( dataModel ) ; // table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); table.setAutoResizeMode( JTable.AUTO_RESIZE_ALL_COLUMNS ) ; JScrollPane scrollpane = new JScrollPane( table ) ; add( scrollpane , BorderLayout.CENTER ) ; // table.addKeyListener(this); //setSize(400,400); table.setShowGrid( false ) ; setVisible( true ) ; } public void setDir( String neuDir ) { table.setDir( neuDir ) ; } public String getDir() { return dataModel.fullPath() ; }// ****************************************** class HJTable extends JTable { HTableModel dataModel ; // AbstractTableModel dataModel; String opFileName ; // Variable f\uFFFDr Dateiname f\uFFFDr飐 Popup-Menue String opFileShortName ; // Variable f\uFFFDr kurzen Dateiname f\uFFFDr飐 Popup-Menue String opDirectory ; // Variable f\uFFFDr Directory f\uFFFDr飐 Popup-Menue boolean opIsHide ; // Popup-Menue public HJTable( HTableModel dm ) { super( dm ) ; this.dataModel = dm ; setColumnWidth() ; // Spaltenbreiten einstellen setColumnAlignment() ; // Textausrichtung einstellen setSelectionMode( ListSelectionModel.SINGLE_INTERVAL_SELECTION ) ; } public void processKeyEvent( KeyEvent e ) { if ( e.getKeyCode() == KeyEvent.VK_HOME & e.getID() == KeyEvent.KEY_PRESSED ) { setSelectionMode( ListSelectionModel.MULTIPLE_INTERVAL_SELECTION ) ; setColumnSelectionInterval( 0 , 0 ) ; e.setKeyCode( KeyEvent.VK_LEFT ) ; } else if ( e.getKeyCode() == KeyEvent.VK_END ) { setSelectionMode( ListSelectionModel.MULTIPLE_INTERVAL_SELECTION ) ; setColumnSelectionInterval( getColumnCount() - 1 , getColumnCount() - 1 ) ; e.setKeyCode( KeyEvent.VK_RIGHT ) ; } else if ( e.getKeyCode() == KeyEvent.VK_PAGE_DOWN & e.getID() == KeyEvent.KEY_PRESSED ) { setSelectionMode( ListSelectionModel.MULTIPLE_INTERVAL_SELECTION ) ; HInteger goTo = new HInteger( getSelectedRow() ) ; goTo.maxAdd( 15 , getRowCount() - 1 ) ; setRowSelectionInterval( goTo.getInt() , goTo.getInt() ) ; } else if ( e.getKeyCode() == KeyEvent.VK_PAGE_UP & e.getID() == KeyEvent.KEY_PRESSED ) { setSelectionMode( ListSelectionModel.MULTIPLE_INTERVAL_SELECTION ) ; HInteger goTo = new HInteger( getSelectedRow() ) ; goTo.minSub( 15 , 0 ) ; setRowSelectionInterval( goTo.getInt() , goTo.getInt() ) ; } else if ( e.getKeyCode() == KeyEvent.VK_ENTER ) { if ( e.getID() == KeyEvent.KEY_PRESSED ) { int selRow = getSelectedRow() ; if ( selRow > -1 ) { // -1 heisst nicht selectiert if ( dataModel.isDir( selRow ) ) { // selectiertes File=Directory // String fName=dataModel.fullPath()+"\\"+dataModel.getName(selRow); // String fName="\\"+dataModel.getName(selRow); // if(!dataModel.fullPath().equals("\\")) fName=dataModel.fullPath()+fName; // ex.setTreeSubDir(fName); ex.setTreeSubDir( dataModel.getName( selRow ) ) ; } else if ( canExec( dataModel.fullPath() + "\\" + dataModel.getName( selRow ) ) ) { // System.out.println("Run "+dataModel.getName(selRow)); try { Runtime runtime = Runtime.getRuntime() ; Process process = runtime.exec( dataModel.fullPath() + "\\" + dataModel.getName( selRow ) ) ; } catch ( java.io.IOException ioe ) { System.err.println( ioe.getMessage() ); ioe.printStackTrace(); System.out.println( dataModel.getName( selRow ) + " kann nicht gestartet werden" ) ; } ; } } return ; // VK_ENTER komplett abfangen } } super.processKeyEvent( e ) ; } public void processMouseEvent( MouseEvent me ) { int selRow = rowAtPoint( me.getPoint() ) ; if ( me.isPopupTrigger() ) { // Popup-Men\uFFFD // int selRow=rowAtPoint(me.getPoint()); if ( selRow > -1 ) { // -1 heisst nicht selectiert this.popupMenu( me , dataModel.fullName( selRow ) , dataModel.getName( selRow ) , dataModel.fullPath() + "\\" , dataModel.isHidden( selRow ) ) ; return ; } } if ( me.getID() == MouseEvent.MOUSE_CLICKED ) { if ( ( me.getClickCount() > 1 ) && ( ( me.getModifiers() & InputEvent.BUTTON1_MASK ) > 0 ) ) { // Doppelclick linke Maustaste // int selRow=rowAtPoint(me.getPoint()); if ( selRow > -1 ) { // -1 heisst nicht selectiert if ( dataModel.isDir( selRow ) ) { // selectiertes File=Directory ex.setTreeSubDir( dataModel.getName( selRow ) ) ; // Wechsel der Baumdarstellung in das doppelgeclickte Directory, beim Wechsel der TreeSelection wechselt die Tabellendarstellung } else if ( canExec( dataModel.fullPath() + "\\" + dataModel.getName( selRow ) ) ) { // System.out.println("Run "+dataModel.getName(selRow)); try { Runtime runtime = Runtime.getRuntime() ; Process process = runtime.exec( dataModel.fullPath() + "\\" + dataModel.getName( selRow ) ) ; // Programm starten } catch ( java.io.IOException ioe ) { System.err.println( ioe.getMessage() ); ioe.printStackTrace(); System.out.println( dataModel.getName( selRow ) + " kann nicht gestartet werden" ) ; } ; return ; } } } } super.processMouseEvent( me ) ; } public void setDir( String neuDir ) { dataModel.setDir( neuDir ) ; setColumnWidth() ; // Spaltenbreiten einstellen setColumnAlignment() ; // Textausrichtung einstellen // setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); setSelectionMode( ListSelectionModel.SINGLE_INTERVAL_SELECTION ) ; setRowSelectionInterval( 0 , 0 ) ; scrollRectToVisible( getCellRect( getSelectedRow() , 0 , true ) ) ; } // Spaltenbreiten einstellen void setColumnWidth() { for ( int i = 0 ; i < getColumnCount() ; i++ ) { TableColumn tc = getColumn( dataModel.getColumnName( i ) ) ; int iWidth = dataModel.getColumnWidth( i ) ; if ( iWidth > 0 ) { tc.setMaxWidth( iWidth ) ; tc.setMinWidth( iWidth ) ; } } } // Alignment (Textausrichtung) einstellen // -1 links, 0 center, 1 rechts void setColumnAlignment() { for ( int i = 0 ; i < getColumnCount() ; i++ ) { int iAlignment = dataModel.getColumnAlignment( i ) ; TableColumn tc = getColumn( dataModel.getColumnName( i ) ) ; // DefaultTableCellRenderer ren=(DefaultTableCellRenderer)tc.getCellRenderer(); // TableCellRenderer ren=tc.getCellRenderer(); DefaultTableCellRenderer ren = new DefaultTableCellRenderer() ; tc.setCellRenderer( ren ) ; if ( iAlignment > 0 ) { ren.setHorizontalAlignment( JLabel.RIGHT ) ; } else if ( iAlignment < 0 ) { ren.setHorizontalAlignment( JLabel.LEFT ) ; } else { ren.setHorizontalAlignment( JLabel.CENTER ) ; } } } boolean canExec( String fName ) { if ( fName.length() < 4 ) { return false ; } if ( ( ( fName.substring( fName.length() - 4 ) ).toUpperCase() ).equals( ".EXE" ) ) { return true ; } if ( ( ( fName.substring( fName.length() - 4 ) ).toUpperCase() ).equals( ".COM" ) ) { return true ; } if ( ( ( fName.substring( fName.length() - 4 ) ).toUpperCase() ).equals( ".BAT" ) ) { return true ; } return false ; } // Popup-Menue public void popupMenu( MouseEvent me , String dName , String sName , String sDir , boolean isHide ) { opFileName = dName ; // Variable f\uFFFDr Dateiname f\uFFFDr飐 Popup-Menue opFileShortName = sName ; // Variable f\uFFFDr kurzen Dateiname f\uFFFDr飐 Popup-Menue opDirectory = sDir ; // Variable f\uFFFDr Directory f\uFFFDr飐 Popup-Menue opIsHide = isHide ; JPopupMenu popup = new JPopupMenu() ; JMenuItem oeffnen = new JMenuItem( "謋fnen" ) ; oeffnen.addActionListener( new ActionAdapter() { public void actionPerformed( ActionEvent ae ) { oeffnenFile() ; } } ) ; popup.add( oeffnen ) ; JMenuItem kopieren = new JMenuItem( "Kopieren" ) ; kopieren.addActionListener( new ActionAdapter() { public void actionPerformed( ActionEvent ae ) { kopierenFile() ; } } ) ; popup.add( kopieren ) ; JMenuItem loeschen = new JMenuItem( "L鰏chen" ) ; loeschen.addActionListener( new ActionAdapter() { public void actionPerformed( ActionEvent ae ) { loeschenFile() ; } } ) ; popup.add( loeschen ) ; popup.show( me.getComponent() , me.getX() , me.getY() ) ; } public void oeffnenFile() { JOptionPane.showMessageDialog( null , "\u00F6ffnen nicht fertig !" , "\u00F6ffnen" , JOptionPane.INFORMATION_MESSAGE ) ; } public void kopierenFile() { if ( opIsHide ) { JOptionPane.showMessageDialog( null , "Datei " + opFileName + " isHidden (kopieren nicht m\u00F6glich) !" , "Kopieren" , JOptionPane.ERROR_MESSAGE ) ; return ; } /* Frame f=new Frame(); JFileChooser fc=new JFileChooser(); // opDirectory); fc.setDialogTitle("Kopieren "+opFileName); fc.setName(opFileShortName); int retWert=fc.showDialog(this,"Kopieren nach"); String destName=fc.getName(); System.out.println(destName); if(retWert!=JFileChooser.CANCEL_OPTION){ */ Frame f = new Frame() ; FileDialog fd = new FileDialog( f ) ; fd.setTitle( "Kopieren " + opFileName ) ; fd.setFile( opFileShortName ) ; fd.setDirectory( opDirectory ) ; // System.out.println(opFileShortName); fd.setMode( FileDialog.SAVE ) ; fd.show() ; // System.out.println(fd.getDirectory()+fd.getFile()); if ( ! ( fd.getFile().equals( "null" ) ) ) { try { Runtime runtime = Runtime.getRuntime() ; // System.out.println((fc.getCurrentDirectory().getAbsolutePath())+fc.getName()); // Process process=runtime.exec(System.getProperty("user.dir")+"\\FileCopy.bat "+opFileName+" "+(fc.getCurrentDirectory().getAbsolutePath())+fc.getName()); String cpStr = System.getProperty( "user.dir" ) + "\\FileCopy.bat " + opFileName + " " + fd.getDirectory() + fd.getFile() ; System.out.println( cpStr ) ; Process process = runtime.exec( cpStr ) ; try { process.waitFor() ; // Warten bis Kopieren erledigt } catch ( InterruptedException e ) { System.err.println( e.getMessage() ); e.printStackTrace(); } ex.updateTableDir() ; // Aktualisieren Bild } catch ( java.io.IOException ioe ) { System.err.println( ioe.getMessage() ); ioe.printStackTrace(); } ; } } public void loeschenFile() { if ( JOptionPane.showConfirmDialog( null , "Datei " + opFileName + " l\u00F6schen?\n(Achtung, hier wirkt kein Papierkorb)" , "L\u00F6schen" , JOptionPane.YES_NO_OPTION ) == 0 ) { // System.out.println(opFileName+" loeschen"); try { File f = new File( opFileName ) ; f.delete() ; Waiting w = new Waiting( 500 ) ; // Warten bis Loeschen erledigt ex.updateTableDir() ; // Aktualisieren Bild } catch ( Exception e ) { System.err.println( e.getMessage() ); e.printStackTrace(); JOptionPane.showMessageDialog( null , "Datei " + opFileName + " l\u00F6schen nicht m\u00F6glich !" , "L\u00F6schen" , JOptionPane.ERROR_MESSAGE ) ; } } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -