tutorials.de Buch-Aktion 02/2012
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
732
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von schnuffie
    schnuffie schnuffie ist offline Mitglied Platin
    Registriert seit
    Oct 2004
    Ort
    Ober-Roden (Hessen)
    Beiträge
    725
    Hallo Leute,

    bezugnehmend auf testalucida:
    Zitat Zitat von testalucida
    Hallo,

    endlich ist es mir gelungen, das zu einer Datei gehörende Icon und den Dateinamen auf einem JTextPane anzuzeigen (in Form eines JLabels).
    Nun möchte ich, dass nach einem Doppelklick auf das Label das richtige Programm gestartet wird - also wenn ich auf auf das Word-Symbol einer .doc-Datei klicke, soll WORD aufgehen.
    Wie kann ich aus der Datei-Endung das richtige Programm ermitteln?
    Muss ich die Registry durchsuchen? Wenn ja - wie geht das?

    Danke für jeden Hinweis!

    Ciao
    testalucida
    Wie kann ich das Standard-Icon einer Datei (z.B. vom Dateiexplorer) in einem JPanel, JButton bzw. JLabel anzeigen?

    Ein Code-Schnipsel würde mir weiterhelfen.
     
    CU schnuffie

    Fragliche Fragen stellende Fragensteller sind für verantwortungslose Antworten antwortender verantwortlicher Antworter selbst verantwortlich.

  2. #2
    Avatar von Bernd1984
    Bernd1984 Bernd1984 ist offline Kastenbrot
    Registriert seit
    Oct 2004
    Beiträge
    414
    Hallo,

    hast Du das vorgehende Thema "Icon ermitteln, mit dem die Datei-Endung verknüpft ist" zu diesem Problem schon gelesen?

    http://www.tutorials.de/tutorials185112.html

    Da gibt es ein Beispiel von Tom.
    Geändert von Thomas Darimont (14.01.05 um 18:54 Uhr)
     
    Gruss Bernd
    Zitat Zitat von mAu
    * Unformatierten Quellcode schaue ich mir _nicht_ an!
    * Sollte ich euch bei einer Frage weitergeholfen haben, würde ich mich über eine positive Bewertung freuen.
    * Bitte die Netiquette beachten.
    * Vergesst nicht, beantwortete Fragen als erledigt zu markieren!

  3. #3
    Avatar von schnuffie
    schnuffie schnuffie ist offline Mitglied Platin
    Registriert seit
    Oct 2004
    Ort
    Ober-Roden (Hessen)
    Beiträge
    725
    Aha.

    Danke, das hilft mir weiter.
     
    CU schnuffie

    Fragliche Fragen stellende Fragensteller sind für verantwortungslose Antworten antwortender verantwortlicher Antworter selbst verantwortlich.

  4. #4
    testalucida testalucida ist offline Mitglied Bronze
    Registriert seit
    Sep 2004
    Ort
    Nürnberg
    Beiträge
    29
    Hi,
    hier der Auszug aus meiner "RichTextBox", die eine Erweiterung von JTextPane ist (der Kommentar passt noch nicht ganz zur Methode - drop von Text ist noch nicht realisiert ):
    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
    
    // Die RichTextBox ist ein DropTarget:
            DropTarget droptarget = new DropTarget( this, 
                    new DropTargetListener(){
     
                        public void dragEnter(DropTargetDragEvent arg0) {
                        }
     
                        public void dragOver(DropTargetDragEvent arg0) {
                        }
     
                        public void dropActionChanged(DropTargetDragEvent arg0) {
                        }
                        
                        /**
                         *  Wir lassen File- und Textdrags zu.
                         *  Wird ein File fallengelassen, zeigen wir ein
                         *  FileSymbol an. Text wird an Cursorposition eingefügt.
                         */
                        public void drop( DropTargetDropEvent e ) {
                            try{
                                Transferable tr = e.getTransferable();
                                DataFlavor[] flavors = tr.getTransferDataFlavors();
                                for (int i = 0; i < flavors.length; i++) {
                                    if( flavors[i].isFlavorJavaFileListType() ) {
                                        e.acceptDrop( e.getDropAction() );
                                        List files = (List) tr.getTransferData( flavors[i] );
                                        FileSymbol symb = new FileSymbol( files.get( 0 ).toString() );      
                                        RichTextBox.this.insertComponent( symb );
                                        e.dropComplete( true );
                                    }
                                }
                            } catch( Throwable t ) { 
                                t.printStackTrace();
                                e.rejectDrop();
                            }
                            
                        }
     
                        public void dragExit(DropTargetEvent arg0) {
                        }
                
                    });

    ...und das hier ist "FileSymbol", eine Erweiterung von JLabel:

    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
    
    /*
     * Created on 05.01.2005
     *
     */
    package fileRepresentations;
     
    import java.awt.Cursor;
    import java.awt.Font;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.io.File;
    import java.io.IOException;
     
    import javax.swing.Icon;
    import javax.swing.JLabel;
    import javax.swing.filechooser.FileSystemView;
     
    import fontFactory.FontFactory;
     
    /**
     * @author T05794A
     *
     * FileSymbol ist eine Extension-Klasse von JLabel. 
     * Sie ermittelt zu einem File-Objekt das zugehörige System-Icon,
     * verwendet dieses als Icon und platziert zentriert darunter den 
     * Dateinamen.
     * Bei Doppelclick auf FileSymbol wird die zur Datei gehörende Anwendung 
     * gestartet.
     */
    public class FileSymbol extends JLabel {
        /**
         * Comment for <code>serialVersionUID</code>
         */
        private static final long serialVersionUID = 6283963523329215268L;
        private File _file;
        private Cursor _cursorMemo;
        private Cursor _thiscursor = new Cursor( Cursor.HAND_CURSOR );
        
        /**
         *  Erzeugt ein leeres FileSymbol
         */
        public FileSymbol() {
            this( (File)null );
        }
     
        /**
         * 07.01.2005 18:32:23
         * Erzeugt ein FileSymbol aus dem kompletten Pfadnamen
         * sPathnFile
         * @param sPathnFile
         */
        public FileSymbol( String sPathnFile ) {
            this( new File( sPathnFile ) );
        }
        
        /**
         * Erzeugt ein Label mit Icon und Beschriftung.
         * @param icon: das anzuzeigende Icon
         * @param file: die Datei, deren Icon gezeigt wird.
         *              Ihr Name wird unter dem Icon gezeigt.
         */
        public FileSymbol( File file ) {
            super();
            // so arrangieren, dass der Text zentriert unter dem Icon 
            // angeordnet wird:
            setVerticalTextPosition( JLabel.BOTTOM );
            setHorizontalTextPosition( JLabel.CENTER );
            // kleine Schrift einstellen.
            setFont( FontFactory.getFont( "Arial", Font.PLAIN, 10 ) );
            
            _file = file;
            
            if( _file != null ) {
                setIconAndText();
            }   
            
            
            // einen MausListener anmelden, damit wir bei Doppelclick auf das
            // FileSymbol das passende Programm starten können.
            // Ausserdem wollen wir den Mauszeiger ändern, wenn der Anwender
            // über unser FileSymbol fährt:
            addMouseListener( new MouseListener() {
     
                public void mouseClicked(MouseEvent e) {
                    //if( e.getClickCount() > 1 ) {
                        //Programm starten, das mit der Datei assoziiert ist
                        runProgram( getFile() );
                    //}
                }
     
                public void mouseEntered(MouseEvent e) {
                    _cursorMemo = FileSymbol.this.getCursor();
                    FileSymbol.this.setCursor( _thiscursor );
                }
     
                public void mouseExited(MouseEvent e) {
                    FileSymbol.this.setCursor( _cursorMemo );
                }
     
                public void mousePressed(MouseEvent e) {
                }
     
                public void mouseReleased(MouseEvent e) {
                }
            });
        }
        
        /**
         * 07.01.2005 18:42:30
         * Setzt das mit _file verknüpfte Icon und den Dateinamen
         */
        private void setIconAndText() {
            Icon icon = FileSystemView.getFileSystemView().getSystemIcon( _file );
            // das Icon setzen
            setIcon( icon );
            // den Text setzen
            setText( _file.getName() );
        }
        
        /**
         * 07.01.2005 18:43:00
         * Setzt ein neues _file-Objekt
         * @param file
         */
        public void setFile( File file ) {
            _file = file;
            setIconAndText();
        }
        
        /**
         * 07.01.2005 18:43:31
         * @return File: das _file-Objekt dieses FileSymbol
         */
        public File getFile()  {
            return _file;
        }
        
        private void runProgram( File file )
        {
            String cmd = "cmd /c \"" + file.getAbsolutePath() + "\"";
            //System.out.println(cmd);
            try {
                Runtime.getRuntime().exec(cmd);
            } catch( IOException ex ) { ex.printStackTrace(); }
        }
     
    }
     

  5. #5
    Avatar von schnuffie
    schnuffie schnuffie ist offline Mitglied Platin
    Registriert seit
    Oct 2004
    Ort
    Ober-Roden (Hessen)
    Beiträge
    725
    Ja, kann ich Einiges daraus verwenden. Danke nochmal!
     
    CU schnuffie

    Fragliche Fragen stellende Fragensteller sind für verantwortungslose Antworten antwortender verantwortlicher Antworter selbst verantwortlich.

Ähnliche Themen

  1. JPanel auf JFrame auch im JDialog anzeigen
    Von StehtimSchilf im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 23.03.10, 10:01
  2. JPanel .gif Datei anzeigen
    Von illaX im Forum Java
    Antworten: 8
    Letzter Beitrag: 06.12.09, 16:12
  3. PDF aus Blob auf JPanel anzeigen
    Von nethacker008 im Forum Java
    Antworten: 0
    Letzter Beitrag: 16.11.07, 11:21
  4. Antworten: 7
    Letzter Beitrag: 16.05.07, 17:03
  5. JPanel Instanz in einen JPanel laden ?
    Von mkoeni1 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 4
    Letzter Beitrag: 15.01.07, 12:15