tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
296
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Teilzeitphilosoph Teilzeitphilosoph ist offline Mitglied Gold
    Registriert seit
    Jun 2007
    Beiträge
    136
    Moinz.
    Ich bastel mir gerade n Viewer zusammen, wo ich zwei JPanels hab. Im linken Panel will ich durch Verzeichnisse browsen können. Per Button soll der aktuelle Inhalt dann ins rechte Panel kopiert werden.
    Nun hab ich mir sagen lassen, dass es einen FileDialog gibt aber ein extra Fenster wollte ich vermeiden. Gibt es nen Weg, um sich den Inhalt von Verzeichnissen in einem JPanel nice anzeigen lassen und dort browsen zu können?

    -bedank-
    TZP
     

  2. #2
    Teilzeitphilosoph Teilzeitphilosoph ist offline Mitglied Gold
    Registriert seit
    Jun 2007
    Beiträge
    136
    So, hab schon ein wenig erreicht. Mein JPanel hat jetzt einen JFileChooser bekommen aber da gibt es 2 neue Probleme.
    Erstens ist das Teil zu gross und ich kann es nicht skalieren.
    Zweitens brauch ich gar nicht so viel Optionen.
    Mein Wunsch ist ein einfaches JPanel, das in etwa so was anzeigt:

    ..
    Verzeichnis XX
    Verzeichnis XY
    Datei.xyz
    Datei.xyy
    Datei.xzz

    wobei die .. dazu sind, um eine Ebene höher zu kommen. Hat Java so was überhaupt?

    -bedank-
    TZP
     

  3. #3
    Avatar von benhaze
    benhaze benhaze ist offline Mitglied Gold
    Registriert seit
    Jun 2006
    Ort
    Bochum (NRW)
    Beiträge
    186
    bau dir doch sowas selber....


    so fängste an:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    File[] roots = File.listRoots();
     
    for (File f : roots)
    {
       File[] files = f.listFiles();
       for (File aFile : files)
       {
          //do irgend what....
       }
    }
    Der Code ist vollkommen ungetestet!
    Einfach nur mal als kl. Ansatz....

    Die Files baust du dir ein ein Tree, dann nen TreeSelectionListener drauf.....
     

  4. #4
    Avatar von takidoso
    takidoso takidoso ist offline Mitglied Brillant
    Registriert seit
    Aug 2004
    Ort
    Kömigstein
    Beiträge
    911
    Zitat Zitat von Teilzeitphilosoph Beitrag anzeigen
    So, hab schon ein wenig erreicht. Mein JPanel hat jetzt einen JFileChooser bekommen aber da gibt es 2 neue Probleme.
    klingt doch schon ganz gut
    Erstens ist das Teil zu gross und ich kann es nicht skalieren.
    Zweitens brauch ich gar nicht so viel Optionen.
    was meinst Du jetzt mit Skalieren? Wenn es Dir gelungen ist den JFileChooser ordentlich in ein Panel zu bringen, sollte er eigetnlich auch seine Größe entsprechend dem Panel auf dem er liegt anpassen.
    vielleicht postest Du mal etws code dazu, dann könnte ich vielleicht weiter helfen.
    Mhmm welche Optionen willst Du denn nicht haben?
    Mein Wunsch ist ein einfaches JPanel, das in etwa so was anzeigt:
    ...
    Also ich würde sowas wenn es geht nicht selbst bauen, denn einen Filechooser wünwcht man sich als Anwender meist als eine Art Baumstruktur. Sowas kann man nattürlich in Java auch erneut bauen, aber es existiert doch schon, in Form des JFileChoosers.

    Interessant finde ich Deinen generellen Anwendungsfall, den ich mir ungefär so vorstelle:
    Links eine Quellliste rechts eine Zielliste dazwischen vermutlich in der Mitte Buttens zum hin und her schieben und innerhalb eines Dialoges ein OK zum übernehmen.
    Dies kann man recht allgemein halten und hat dann, egal um welche Inhalte es sich dreht, einen entsprechenden Dialog oder Fenster, den man programmatisch immer wieder verwenden kann.
    Als kleine Anregung dazu eine Klasse die ich schon sehr oft verwendet habe:
    Code java:
    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
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    
    import java.awt.Dimension;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.Insets;
    import java.awt.event.ActionEvent;
     
    import javax.swing.BoxLayout;
    import javax.swing.DefaultListModel;
    import javax.swing.JButton;
    import javax.swing.JList;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.ListCellRenderer;
     
    public class FeatureCollectionPanel extends JPanel
    {
        private JScrollPane jScrollPane1 = new JScrollPane();
        private JPanel m_buttonPanel = new JPanel();
        private JScrollPane jScrollPane2 = new JScrollPane();
        private JButton m_hinzuButton = new JButton();
        private JButton m_wegButton = new JButton();
        private JButton allesHinzuButton = new JButton();
        private JButton m_allesWegButton = new JButton();
        private JList m_sourceList = new JList();
        private JList m_goalList = new JList();
        private GridBagLayout gridBagLayout2 = new GridBagLayout();
     
     
        public FeatureCollectionPanel()
        {
            try
            {
                jbInit();
            }
            catch(Exception ex)
            {
                ex.printStackTrace();
            }
        }
     
        private void jbInit() throws Exception
        {
            m_goalList.setModel(new DefaultListModel());
            BoxLayout boxLayout21 = new BoxLayout(this,BoxLayout.X_AXIS);
            this.setLayout(boxLayout21);
            m_buttonPanel.setLayout(gridBagLayout2);
            m_hinzuButton.setText("Hinzufügen");
            m_hinzuButton.addActionListener(new java.awt.event.ActionListener()
            {
                public void actionPerformed(ActionEvent e)
                {
                    m_hinzuButton_actionPerformed(e);
                }
            });
            m_wegButton.setText("Entfernen");
            m_wegButton.addActionListener(new java.awt.event.ActionListener()
            {
                public void actionPerformed(ActionEvent e)
                {
                    m_wegButton_actionPerformed(e);
                }
            });
            allesHinzuButton.setText("Alles Hinzufügen");
            allesHinzuButton.addActionListener(new java.awt.event.ActionListener()
            {
                public void actionPerformed(ActionEvent e)
                {
                    allesHinzuButton_actionPerformed(e);
                }
            });
            m_allesWegButton.setText("Alles Entfernen");
            m_allesWegButton.addActionListener(new java.awt.event.ActionListener()
            {
                public void actionPerformed(ActionEvent e)
                {
                    m_allesWegButton_actionPerformed(e);
                }
            });
     
            jScrollPane1.setMinimumSize(new Dimension(150, 200));
            jScrollPane1.setPreferredSize(new Dimension(150, 200));
            jScrollPane2.setMinimumSize(new Dimension(150, 200));
            jScrollPane2.setPreferredSize(new Dimension(150, 200));
            m_buttonPanel.setMaximumSize(new Dimension(140, 32767));
            m_buttonPanel.setMinimumSize(new Dimension(140, 200));
            m_buttonPanel.setPreferredSize(new Dimension(140, 200));
     
            this.add(jScrollPane1, null);
            jScrollPane1.getViewport().add(m_sourceList, null);
            this.add(m_buttonPanel, null);
            m_buttonPanel.add(m_hinzuButton,    new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0
                ,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5, 5, 5, 5), 0, 0));
            m_buttonPanel.add(m_wegButton,   new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0
                ,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5, 5, 5, 5), 0, 0));
            m_buttonPanel.add(allesHinzuButton,   new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0
                ,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5, 5, 5, 5), 0, 0));
            m_buttonPanel.add(m_allesWegButton,   new GridBagConstraints(0, 3, 1, 1, 0.0, 0.0
                ,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5, 5, 5, 5), 0, 0));
            this.add(jScrollPane2, null);
            jScrollPane2.getViewport().add(m_goalList, null);
        }// end of jbInit()
     
        public void setFeatureList(java.util.List features)
        {
            DefaultListModel sModel = new DefaultListModel();
     
            for (int i=0; features!=null && i<features.size(); i++)
            {
                sModel.addElement(features.get(i));
            }
            m_sourceList.setModel(sModel);
        }
     
        public void setFeatureList(Object[] features)
        {
            DefaultListModel sModel = new DefaultListModel();
     
            for (int i=0; features !=null && i<features.length; i++)
            {
                sModel.addElement(features[i]);
            }
            m_sourceList.setModel(sModel);
        }
     
        public Object[] getFeatureList()
        {
            DefaultListModel sModel = (DefaultListModel)m_sourceList.getModel();
            Object[] objekte = new Object[sModel.size()];
            sModel.copyInto(objekte);
            return objekte;
        }
     
        public void setCellRenderer(ListCellRenderer renderer)
        {
            m_goalList.setCellRenderer(renderer);
            m_sourceList.setCellRenderer(renderer);
        }
     
        public ListCellRenderer getCellRenderer()
        {
            return m_goalList.getCellRenderer();
        }
     
     
        public Object[] getCollectedFeatures()
        {
            DefaultListModel gModel = (DefaultListModel) m_goalList.getModel();
            Object[] objekte = new Object[gModel.size()];
            gModel.copyInto(objekte);
            return objekte;
        }
     
        public void setCollectedFeatures(java.util.List features)
        {
            DefaultListModel sModel = new DefaultListModel();
     
            for (int i=0; features!=null && i<features.size(); i++)
            {
                sModel.addElement(features.get(i));
            }
            m_goalList.setModel(sModel);
        }
     
        public void setCollectedFeatures(Object[] features)
        {
            DefaultListModel sModel = new DefaultListModel();
     
            for (int i=0; features != null && i<features.length; i++)
            {
                sModel.addElement(features[i]);
            }
            m_goalList.setModel(sModel);
        }
     
        private void m_hinzuButton_actionPerformed(ActionEvent e)
        {
            Object [] objekte = m_sourceList.getSelectedValues();
     
            DefaultListModel gModel = (DefaultListModel)m_goalList.getModel();
            for (int i=0; i<objekte.length; i++)
            {
                if (!gModel.contains(objekte[i]))
                {
                    gModel.addElement(objekte[i]);
                }
            }
        }
     
        private void m_wegButton_actionPerformed(ActionEvent e)
        {
            Object [] objekte = m_goalList.getSelectedValues();
            DefaultListModel gModel = (DefaultListModel)m_goalList.getModel();
     
            for (int i=0; i<objekte.length; i++)
            {
                gModel.removeElement(objekte[i]);
            }
        }
     
        private void allesHinzuButton_actionPerformed(ActionEvent e)
        {
            Object [] objekte = ((DefaultListModel)m_sourceList.getModel()).toArray();
            DefaultListModel gModel = (DefaultListModel)m_goalList.getModel();
            gModel.clear();
            for (int i=0; i<objekte.length; i++)
            {
                gModel.addElement(objekte[i]);
            }
        }
     
        private void m_allesWegButton_actionPerformed(ActionEvent e)
        {
            ((DefaultListModel)m_goalList.getModel()).clear();
        }
    }// end of class FeatureCollectionPanel

    Falls Du Intresse haben solltest auch ein Beispiel zu sehen wo dieses Panel in einen Dialog gesteckt wurde, gib mir bescheid.

    wobei die .. dazu sind, um eine Ebene höher zu kommen. Hat Java so was überhaupt?
    Das sollte möglich sein indem Du der Liste einen entsprechenden CellEditor verpasst, der halt in die nächste Hierachie drüber springt . Entsprechendes für die Verzeichnisse.
    Darstellung von Symbolen (Verzeichnis, Datei-Typen) kann man mit CellRenderern abbilden.

    Viel Spaß und Glück
    Takidoso
    Geändert von takidoso (30.10.08 um 12:38 Uhr)
     

  5. #5
    Teilzeitphilosoph Teilzeitphilosoph ist offline Mitglied Gold
    Registriert seit
    Jun 2007
    Beiträge
    136
    Da wunder ich mich, warum auf meine letzte Frage gar nix kam und nun stell ich fest, dass mein Beitrag genatzt wurde. Muh.
    Na jedenfalls dank ich erst ma für die Vorschläge und werd deine Klasse antesten. Vorher knobel ich noch den Unterschied zwischen JScrollPane und TextArea raus, weil JScrollPane nich auf n JPanel ohne Probleme geaddet werden kann, während TextArea gleich schöne Scrollbalken beinhaltet.

    TZP
     

  6. #6
    Avatar von hammet
    hammet hammet ist offline himekishi
    Registriert seit
    Aug 2006
    Ort
    Bayern
    Beiträge
    334
    Meinst du zufällig ein TextPane? Denn ein ScrollPane und ein TextArea zu vergleichen ist keien gute Idee oO
     
    Handlanger des Dr. Ex1tus

    Ich kenne Matzes dunkles Geheimnis ! oO

    o
    L_/
    OL
    This is Schäuble. Copy Schäuble into your signature to help him on his way to Überwachungsstaat.

    Hallo Nuray!

  7. #7
    Teilzeitphilosoph Teilzeitphilosoph ist offline Mitglied Gold
    Registriert seit
    Jun 2007
    Beiträge
    136
    Hat sich schon wieder erledigt...ich hab das JScrollPane zum Laufen gebracht und es t 1a. Soweit komm ich erst mal damit klar.
     

Ähnliche Themen

  1. Dateiauswahl (FileDialog)
    Von Hallasas im Forum C/C++
    Antworten: 7
    Letzter Beitrag: 29.06.10, 15:02
  2. Dateinamen aus FileDialog
    Von Mimu im Forum Visual Basic 6.0
    Antworten: 3
    Letzter Beitrag: 17.08.07, 14:14
  3. FileDialog für InfoPath
    Von zioProduct im Forum Javascript & Ajax
    Antworten: 0
    Letzter Beitrag: 25.08.06, 08:36
  4. FileDialog mit Java
    Von Juri Schlönz im Forum Linux & Unix
    Antworten: 1
    Letzter Beitrag: 13.05.05, 15:29
  5. Problem mit AWT-FileDialog
    Von derpilger im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 11.03.05, 11:56