ERLEDIGT
NEIN
NEIN
ANTWORTEN
6
6
ZUGRIFFE
296
296
EMPFEHLEN
-
29.10.08 12:03 #1
- 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
-
29.10.08 15:05 #2
- 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
-
bau dir doch sowas selber....
so fängste an:
Der Code ist vollkommen ungetestet!Code java:
Einfach nur mal als kl. Ansatz....
Die Files baust du dir ein ein Tree, dann nen TreeSelectionListener drauf.....
-
klingt doch schon ganz gut
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.Erstens ist das Teil zu gross und ich kann es nicht skalieren.
Zweitens brauch ich gar nicht so viel Optionen.
vielleicht postest Du mal etws code dazu, dann könnte ich vielleicht weiter helfen.
Mhmm welche Optionen willst Du denn nicht haben?
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.Mein Wunsch ist ein einfaches JPanel, das in etwa so was anzeigt:
...
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.
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.wobei die .. dazu sind, um eine Ebene höher zu kommen. Hat Java so was überhaupt?
Darstellung von Symbolen (Verzeichnis, Datei-Typen) kann man mit CellRenderern abbilden.
Viel Spaß und Glück
TakidosoGeändert von takidoso (30.10.08 um 12:38 Uhr)
-
03.11.08 10:53 #5
- 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
-
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!
-
03.11.08 16:42 #7
- 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
-
Dateiauswahl (FileDialog)
Von Hallasas im Forum C/C++Antworten: 7Letzter Beitrag: 29.06.10, 15:02 -
Dateinamen aus FileDialog
Von Mimu im Forum Visual Basic 6.0Antworten: 3Letzter Beitrag: 17.08.07, 14:14 -
FileDialog für InfoPath
Von zioProduct im Forum Javascript & AjaxAntworten: 0Letzter Beitrag: 25.08.06, 08:36 -
FileDialog mit Java
Von Juri Schlönz im Forum Linux & UnixAntworten: 1Letzter Beitrag: 13.05.05, 15:29 -
Problem mit AWT-FileDialog
Von derpilger im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 1Letzter Beitrag: 11.03.05, 11:56





Zitieren
Login





