List<String> auswählen

musterrrmax

Mitglied
Hallo! Ist es möglich, eine String Liste in einem GUI ausgegeben, so mit ActionListenern zu versehen, dass man auf ein Element in der Liste klickt und sich dann der Ordner in dem sich das Element befindet geöffnet wird?
Cheers
 

Robat

Top Contributor
Wenn du Swing nutzt dann schau dir mal JList und die Klasse File an (gesetzt dem Fall, dass du mit "Elemente" und "Ordner" tatsächlich Dateien in einer Ordnerstruktur meinst)
 

musterrrmax

Mitglied
Wenn du Swing nutzt dann schau dir mal JList und die Klasse File an (gesetzt dem Fall, dass du mit "Elemente" und "Ordner" tatsächlich Dateien in einer Ordnerstruktur meinst)
Hab ich bereits^^ ich kann auch nach Dateien suchen, aber wenn ich dann mit einer List<String> in meiner Gui Dateinamen ausgebe, würde ich es geren so haben: Man klickt auf eine Zeile in der Liste und es öffnet sich der Explorer mit der Datei auf die man geklickt und die wird dann markert (halt so, dass man sie sofort sieht)
 

Robat

Top Contributor
Ich weiß nicht ob du dir den Link von mir mal durchgelesen hast, aber noch mal: ListItems bekommen keinen ActionListener. Hier arbeitet man mit einem ListSelectionListener um herauszufinden, welches Item angeklickt wurde. Hier mal ein kleines Beispiel..
Java:
final String[] listData = { "Datei1", "Datei2", "Datei3"};
JList<String> list = new JList<>(listData);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

list.getSelectionModel().addListSelectionListener(event -> {
    ListSelectionModel model = (ListSelectionModel) event.getSource();
    if(!model.getValueIsAdjusting()) {
        String filename = list.getSelectedValue();
        // File im Explorer öffnen ...
    }
});
 

musterrrmax

Mitglied
Ich weiß nicht ob du dir den Link von mir mal durchgelesen hast, aber noch mal: ListItems bekommen keinen ActionListener. Hier arbeitet man mit einem ListSelectionListener um herauszufinden, welches Item angeklickt wurde. Hier mal ein kleines Beispiel..
Java:
final String[] listData = { "Datei1", "Datei2", "Datei3"};
JList<String> list = new JList<>(listData);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

list.getSelectionModel().addListSelectionListener(event -> {
    ListSelectionModel model = (ListSelectionModel) event.getSource();
    if(!model.getValueIsAdjusting()) {
        String filename = list.getSelectedValue();
        // File im Explorer öffnen ...
    }
});
Und in welche Klasse würde ich das schreiben? Hab eine Modelklasse (rechenmethoden mit Rückgaben), eine Controllerklasse (da ist der ActionListener drinnen mit der main) und die Viewklasse (Jpanel)
 

Robat

Top Contributor
Die JList an sich müssten du wohl in der Viewklasse anlegen - muss ja angezeigt werden. Die Logik um die Datei im Explorer zu öffnen kann wohl in die Controllerklasse - also da wo sich die Logik abspielt
 

Robat

Top Contributor
Nein nicht in die actionPerformed Methode. Diese Methoden kommt ja aus dem ActionListener Interface und bringt dir in dem Moment nichts. Du nutzt für die JList ja ein ListSelectionListener um Änderungen der Auswahl in einer Liste abzufangen. Die valueChanged(ListSelectionEvent e) wird immer dann ausgeführt, wenn sich die Auswahl in der Liste ändert. Und das ist genau das was du brauchst. Wenn sich die Auswahl geändert hat, holst du dir von der Liste einfach per JList#getSelectedValue() den aktuellen Wert aus der Liste und kannst damit anstellen was auch immer du möchtest.

Hier noch mal ein paar Referenzen zum lesen..
How to Write a List Selection Listener
JList Selection Listener Example
Listening to JList Events
Und zusätzlich noch die JavaDoc zum ListSelectionListener
Damit solltest du prinzipiell genug Informationen haben um den oben stehenden, bzw in den Links geposteten, Code zu verstehen.
 

musterrrmax

Mitglied
Nein nicht in die actionPerformed Methode. Diese Methoden kommt ja aus dem ActionListener Interface und bringt dir in dem Moment nichts. Du nutzt für die JList ja ein ListSelectionListener um Änderungen der Auswahl in einer Liste abzufangen. Die valueChanged(ListSelectionEvent e) wird immer dann ausgeführt, wenn sich die Auswahl in der Liste ändert. Und das ist genau das was du brauchst. Wenn sich die Auswahl geändert hat, holst du dir von der Liste einfach per JList#getSelectedValue() den aktuellen Wert aus der Liste und kannst damit anstellen was auch immer du möchtest.

Hier noch mal ein paar Referenzen zum lesen..
How to Write a List Selection Listener
JList Selection Listener Example
Listening to JList Events
Und zusätzlich noch die JavaDoc zum ListSelectionListener
Damit solltest du prinzipiell genug Informationen haben um den oben stehenden, bzw in den Links geposteten, Code zu verstehen.
Ich habe über die Tage versucht mir das anzueignen, jedoch verstehe ich es noch immer nicht. Ich habe zusätzlich zu der actionPerformed Methode das hier
Java:
private class ListSelectionListener implements EventListener   {
als innere Klasse geschrieben. Was kommt jetzt in diese Methode, um herauszufinden welches Item in meiner Liste selected wurde?
 

Robat

Top Contributor
Wie kommst du denn jetzt auf EventListener? Hast du dir die oben stehenden Links mal angeschaut? Deine eigene Klassse ListSelectionListener zu nennen ist eher eine schlechte Idee. ListSelectionListener ist ja bereits ein Interface, welches du benutzen sollst. Das Skelet der Klasse sollte ca so aussehen:
Java:
public class YourListenerClass implements ListSelectionListener {
    @Override
    public void valueChanged(ListSelectionEvent e) {
          // your code here
    }
}
 

musterrrmax

Mitglied
Wie kommst du denn jetzt auf EventListener? Hast du dir die oben stehenden Links mal angeschaut? Deine eigene Klassse ListSelectionListener zu nennen ist eher eine schlechte Idee. ListSelectionListener ist ja bereits ein Interface, welches du benutzen sollst. Das Skelet der Klasse sollte ca so aussehen:
Java:
public class YourListenerClass implements ListSelectionListener {
    @Override
    public void valueChanged(ListSelectionEvent e) {
          // your code here
    }
}
Ahh danke! Und wie genau öffne ich jetzt den Explorer? Dein Link ist in C# geschrieben :')
 

Robat

Top Contributor

musterrrmax

Mitglied
Hab es so probiert aber irgendwie tut sich nichts
Java:
String s = oberfläche.getSelectedValue2();
   try {
    Runtime.getRuntime().exec("explorer.exe \"C:\\EDD-Files\"" + s);
   } catch (IOException e1) {
    e1.printStackTrace();
   }
 

musterrrmax

Mitglied
Dann ist es a) nicht mein Link gewesen und hatte b) auch nicht im Ansatz etwas mit der GUI zu tun.


Lass die Anführungszeichen beim Pfad weg .. also Runtime.getRuntime().exec("explorer.exe /select,C:\\EDD-Files\\" + s); [/QUOTE] Ich habs jetzt so gemacht (mit den escape sequenzen), nur leider tut sich trotzdem noch immer nichts [code=Java] Runtime.getRuntime().exec("explorer.exe /select,\\C:\\EDD-Files\\" + s); [/code]
 

Neumi5694

Top Contributor
Ich starte Datei-URLs für gewöhnlich mit diesem Code:
Java:
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler file:\"" + filepath + "\"");
Damit wird die mit dem Dateityp verknüpfte Anwendung ausgeführt. Im Fall eines Verzeichnisses wäre das für gewöhnlich der Windows Explorer.
 

mihe7

Top Contributor
Ich starte Datei-URLs für gewöhnlich mit diesem Code:
Macht das unter Windows was anderes als Desktop#open?

Damit wird die mit dem Dateityp verknüpfte Anwendung ausgeführt. Im Fall eines Verzeichnisses wäre das für gewöhnlich der Windows Explorer.
Soweit ich @musterrrmax verstanden habe, möchte er, dass der Explorer das Verzeichnis öffnet UND die Datei ausgewählt wird, ohne sie auszuführen.
 

mihe7

Top Contributor
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Eintrag Combobox über einen String auswählen Java Basics - Anfänger-Themen 3
G JTable, Zeile auswählen und Ergebnis an Schaltfläche übergeben Java Basics - Anfänger-Themen 4
F Methoden Bitte Helft mir meinen Fehler zu finden. Möchte in diesem Bankenprogramm durch die Konsoleneingabe auswählen welches Konto reduziert und welches erhö Java Basics - Anfänger-Themen 17
K Comparable - Objekte aus Array vergleichen und größtes auswählen Java Basics - Anfänger-Themen 1
F Erste Schritte Random Zahl auswählen Java Basics - Anfänger-Themen 7
P Char aus einem String auswählen Java Basics - Anfänger-Themen 4
A Wie kann man einen zufälligen String aus einem StringArray auswählen? Java Basics - Anfänger-Themen 6
M JFileChooser Ordner auswählen Java Basics - Anfänger-Themen 5
M aus x Elementen y Elemente auswählen Java Basics - Anfänger-Themen 6
B Variablen Mehrere Zahlen mit unterschiedlicher Wahrscheinlichkeit mit Random auswählen Java Basics - Anfänger-Themen 17
J fortlaufende Objekte durch Variable auswählen; Datenbank Java Basics - Anfänger-Themen 4
w0ddes In JTable Reihen programmatisch Auswählen aber für Benutzer sperren Java Basics - Anfänger-Themen 17
D Screen Capture Programm - Ausschnitte auswählen Java Basics - Anfänger-Themen 5
M Zufälliges Auswählen von Textfields Java Basics - Anfänger-Themen 5
R Objekt mit Maus auswählen und verschieben Java Basics - Anfänger-Themen 2
T Laufwerk auswählen und CD-Inhalt in txt Datei speichern Java Basics - Anfänger-Themen 16
G Mehrere Dateien mit JFilechooser auswählen und öffnen. Java Basics - Anfänger-Themen 6
Antoras Einen zufälligen String auswählen Java Basics - Anfänger-Themen 5
K Kombifeld auswählen, rechnung sofort ausführen Java Basics - Anfänger-Themen 11
K Kombifeld Ereignis auswählen und sofort ausführen lassen Java Basics - Anfänger-Themen 2
I Schriftart für einzelnes Wort in der JTextArea auswählen Java Basics - Anfänger-Themen 3
D zuletzt erstellte oder gänderte Datei auswählen! Java Basics - Anfänger-Themen 10
K Java-FileChooser - mehrere Dateien auswählen Java Basics - Anfänger-Themen 3
C txt - Datei auswählen und in texarea abspeichern Java Basics - Anfänger-Themen 2
S Rechenoperationen auswählen Java Basics - Anfänger-Themen 14
H Pfad auswählen Java Basics - Anfänger-Themen 4
J JCombobox Item auswählen Java Basics - Anfänger-Themen 13
S Enum durch String auswählen Java Basics - Anfänger-Themen 8
G Jfilechooser ordner auswählen? Java Basics - Anfänger-Themen 2
halla zufälligen Buchstabe aus dem Alfabet auswählen Java Basics - Anfänger-Themen 5
R Datei auswählen und einlesen Java Basics - Anfänger-Themen 10
G Zeilen auswählen und löschen Java Basics - Anfänger-Themen 29
G String per Zufall auswählen Java Basics - Anfänger-Themen 9
DEvent Dialogfenster in dem man Verzeichnisse auswählen kann Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben