Jlist + Popupmenu

Pete121

Mitglied
Moin,
ich hab ein kleines Problem, ich hab ein Schulprojekt in dem ich ein Programm in Java Programmieren muss. Mein Grundlegendes Problem ist erst einmal, dass mir einfach gewisse Grundlagen fehlen, wir haben die zwar in der Schule durchgenommen, doch mir fehlt einfach die routine in Java und somit habe ich auch viel vergessen.

Ein Problem was ich zur Zeit habe ist das ich ein GUI habe, wo ich eine Jlist habe, wo alle Ordner eines bestimmten Ordnerpfads ausgeben werden (z.B. C:\Program Files). Das klappt schon einmal (das ich das mit Hilfe eines tutorials hinbekommen habe macht mich schon stolz :D). Naja wie auch immer, nun möchte ich das man mit rechtklick in der Jlist ein popupmenu öffnet. Nur das ich das einfach nicht hinbekomme.
Auch dazu habe ich ein tutorial gefunden (Galileo Computing :: Java ist auch eine Insel – 19.15 Menüs und Symbolleisten).

Das schaut nun so bei mir aus:
Java:
jPopupMenu1 = new javax.swing.JPopupMenu();

JPopupMenu popmen = new JPopupMenu();
JMenuItem menu1 = new JMenuItem( "Eintrag 1");
popmen.add( menu1 );
popmen.add( new JMenuItem("Eintrag 2") );

Imports:
Java:
import java.awt.Menu;
import java.awt.PopupMenu;

Ich weiß jetzt nicht in wie weit das richtig ist. Jedenfalls bekomme ich keinen Fehler ausgespuckt. Wie kann ich es jetzt machen das sich das Menupopup mit rechtsklick öffnet. Ich nehme mal an mit ActionListener? Wie bringe ich das in verbindung mit meiner jList?

Ich weiß es ist nicht schön es sich einfach zu machen und euch hier mit meinem Problem zu belästigen, aber es ist ja nicht so das ich gleich zu euch gelaufen bin. Ich verzweifle langsam einfach ein bisschen. :(
 

Pete121

Mitglied
Danke, hat super funktioniert :)
Noch zwei Sachen:

1. Ich würde es gerne so machen, dass wenn ich rechtsklick irgendwo in der jList klicke sich das popupmenu öffnet und gleichzeitig die Zeile markiert wird wo man gegklickt hat. Ich verdeutliche das mal an zwei Screens.

So ist es im Moment:
img_a5973cc0d20f6533f3e6153848e09f62.png

PicBunker.de

so sollte es im besten Falle sein:
img_7ff5ca3113d81d24759aaf7977b35269.png

PicBunker.de

Also wie es auch normal bei Windows ist.


2. Mir ist unklar wie ich jetzt eine bestimmte aktionen ausführen kann, wenn ich einen Punkt im popupmenu auswähle, wäre schön wenn ihr mir auch hier einen tipp geben würdet.
 

Michael...

Top Contributor

Shulyn

Bekanntes Mitglied
2. Mir ist unklar wie ich jetzt eine bestimmte aktionen ausführen kann, wenn ich einen Punkt im popupmenu auswähle, wäre schön wenn ihr mir auch hier einen tipp geben würdet.

Du muss eine Action ausführen, wenn auf den Eintrag geklickt wird.

Java:
 deineTable.addMouseListener(new MouseListener() {  //deiner Tabelle einen MouseListener hinzufügen
            
            public void mouseReleased(MouseEvent e) {
                // TODO Auto-generated method stub
                
            }
            
            public void mousePressed(MouseEvent e) {
                // TODO Auto-generated method stub
                
            }
            
            public void mouseExited(MouseEvent e) {
                // TODO Auto-generated method stub
                
            }
            
            public void mouseEntered(MouseEvent e) {
                // TODO Auto-generated method stub
                
            }
            
            public void mouseClicked(MouseEvent e) {     // Ausführen wenn geklickt wird
                if(e.isPopupTrigger()) {    // nur wenn Popmenu verlangt wird (normal rechtsklick)
                    JPopupMenu popupMenu = new JPopupMenu();
                    JMenuItem eintrag = new JMenuItem(new DeineAction());    // DeineAction hinzufügen
                    popupMenu.add(eintrag);
                    popupMenu.show(deineTable, e.getX(), e.getY());   // An der stelle des klicks anzeigen
                }
            }
        });

Deine Actions musst du dir auch erstellen. So ist es unübersichtlich, abhilfe schafft das Schreiben von Hilfsklassen.
 

Shulyn

Bekanntes Mitglied
Wie gesagt ich würde mir Hilfsklassen bauen.

Java:
public abstract class AbstractPopupTrigger implements MouseListener {
    public void mouseClicked(final MouseEvent e) {
        if (e.isPopupTrigger()) {
            showPopupMenu(e);
        }
    }
    public void mousePressed(final MouseEvent e) {
     
   //usw...

    }
    public abstract void showPopupMenu(final MouseEvent e);
}
 
Zuletzt bearbeitet:

Pete121

Mitglied
Danke erst einmal an alle poster in diesem Thread. Ich hab es jetzt so gemacht:

Java:
private void jList3MouseClicked(java.awt.event.MouseEvent evt) {                                    
        
        if(SwingUtilities.isRightMouseButton(evt)){
        
         JList jList3 = (JList)evt.getSource();
         nt index = jList3.locationToIndex(evt.getPoint());
         if (index >= 1){
            jList3.setSelectedIndex(index);
        }

        JPopupMenu popupMenu = new JPopupMenu();

        JMenuItem menuItem1 = new JMenuItem("Gut");
        JMenuItem menuItem2 = new JMenuItem("Schlecht");
        JMenuItem menuItem3 = new JMenuItem("Dateipfad");

        popupMenu.add(menuItem1);
        popupMenu.add(menuItem2);
        popupMenu.add(menuItem3);
        
        popupMenu.show(evt.getComponent(), evt.getX(), evt.getY());
        }
        

    }

Ich weißt ist jetzt nicht die schönste möglichkeit, aber es klappt erst einmal. So hab ich das Problem gelöst, dass auch die Zeile markiert wird wo ich rechtklicke.
Java:
JList jList3 = (JList)evt.getSource();
         nt index = jList3.locationToIndex(evt.getPoint());
         if (index >= 1){
            jList3.setSelectedIndex(index);
        }

Allerdings gibt es noch ein kleines Problem und zwar soll es eigendlich zusätzlich so sein, dass wenn man mehrer Zeilen markert, dann rechtklickt alle dies Zeilen auch markiert bleiben. Im moment ist es ja so das ja logischerweise nicht so. Wie kann ich das realisieren? :(
 

Michael...

Top Contributor
Ich würde das Popup nur einmalig erzeugen und dann an entsprechender Position wieder verwenden.
Allerdings gibt es noch ein kleines Problem und zwar soll es eigendlich zusätzlich so sein, dass wenn man mehrer Zeilen markert, dann rechtklickt alle dies Zeilen auch markiert bleiben. Im moment ist es ja so das ja logischerweise nicht so. Wie kann ich das realisieren? :(
Dafür musst Du die bereits selektierten Einträge abfragen
Code:
getSelectedIndices()
, um den neuen Index erweitern und statt setSelectedIndex
Code:
setSelectedIndices()
verwenden.
 

AmunRa

Gesperrter Benutzer
Allerdings gibt es noch ein kleines Problem und zwar soll es eigendlich zusätzlich so sein, dass wenn man mehrer Zeilen markert, dann rechtklickt alle dies Zeilen auch markiert bleiben. Im moment ist es ja so das ja logischerweise nicht so. Wie kann ich das realisieren? :(

dazu brauchst du dann die Methode
Code:
setSelectionMode(int selectionMode)
der Klasse JList
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Mady Daten von JList & Combobox in JTable adden Java Basics - Anfänger-Themen 2
U JList erstellen Java Basics - Anfänger-Themen 2
Soloeco JList/DefaultListModel: Wie kann ich ein Panel hinzufügen? Java Basics - Anfänger-Themen 1
J Objekt bei Auswahl in jList ändern Java Basics - Anfänger-Themen 6
D JList ListSelectionEvent entfernen? Java Basics - Anfänger-Themen 13
F JList Elemente mit Strings vergleichen Java Basics - Anfänger-Themen 12
S Export aus JList Java Basics - Anfänger-Themen 6
M Erste Schritte JList einträge Java Basics - Anfänger-Themen 1
M Erste Schritte Doppelte Ausgabe? (JList) Java Basics - Anfänger-Themen 1
M Erste Schritte Auswahl in einer JList Java Basics - Anfänger-Themen 2
P JList, aus selectedValue bestimmten Wert aus Containerklasse auslesen Java Basics - Anfänger-Themen 4
N JList + DefaultListModel + JScrollPane --> ensureIndexIsVisible funktioniert nicht immer Java Basics - Anfänger-Themen 1
C JList Einträge nach Datum sortieren Java Basics - Anfänger-Themen 3
J Element zu jList hinzufügen NullPointerExcepetion Java Basics - Anfänger-Themen 2
S jList --> Array einfügen und Liste löschen Java Basics - Anfänger-Themen 5
H Kein Zugriff auf das Element einer JList möglich: Fehlermeldung Java Basics - Anfänger-Themen 2
I in listFiles() oder JList Dateiendungen entfernen Java Basics - Anfänger-Themen 14
N Erste Schritte MySQL Tabelle in JList darstellen Java Basics - Anfänger-Themen 1
O JList aktualisieren während Dateieinlesung Java Basics - Anfänger-Themen 4
B JFileChooser und JList Java Basics - Anfänger-Themen 7
OnDemand Enumeration <> JList Java Basics - Anfänger-Themen 5
P Mehrfachauswahl in einer JList Java Basics - Anfänger-Themen 2
A JList Elemente in ein andres JList Adden Java Basics - Anfänger-Themen 5
C .txt und Jlist Java Basics - Anfänger-Themen 10
J Daten in eine JList einfügen Java Basics - Anfänger-Themen 6
A JList / toString modify Java Basics - Anfänger-Themen 2
K jlist an text anpassen Java Basics - Anfänger-Themen 3
D Erste Schritte JList + Checkbox Java Basics - Anfänger-Themen 5
I kein zugriff auf jList oder Textfield Java Basics - Anfänger-Themen 2
A JList bearbeiten Java Basics - Anfänger-Themen 2
M Index einer JList ausgeben Java Basics - Anfänger-Themen 4
M Inhalt/Wert aus einer JList ablesen Java Basics - Anfänger-Themen 5
J Markierte Einträge (Dateien) in JList sollen in einen anderen Ordner verschoben werden. Java Basics - Anfänger-Themen 12
J Markierte Items in einer JLIST in einen Ordner verschieben Java Basics - Anfänger-Themen 2
A Input/Output Hashmap in einem JPanel via JList anzeigen Java Basics - Anfänger-Themen 8
S ListModel - Anzeige im JList Java Basics - Anfänger-Themen 4
H JList Java Basics - Anfänger-Themen 2
G JList Objekte richtig anzeigen in JDK 6 Java Basics - Anfänger-Themen 5
U JList Java Basics - Anfänger-Themen 6
L HashMap zu JList Java Basics - Anfänger-Themen 6
C Input/Output Inhalte von ArrayList und JList in Datei schreiben Java Basics - Anfänger-Themen 5
M Jlist Elemente hinzufügen Java Basics - Anfänger-Themen 2
F Koordinaten JList darstellen Java Basics - Anfänger-Themen 4
M BeanBinding Jlist an Jlabel Java Basics - Anfänger-Themen 2
M GUI JList - Objekte listen u. Feld anzeigen? Java Basics - Anfänger-Themen 16
E JList GUI aktualisieren? Java Basics - Anfänger-Themen 3
JAVAnnik JList Auswahl Java Basics - Anfänger-Themen 2
Z In JList per Doppelklick eine Datei öffnen (z.B. ein PDF) Java Basics - Anfänger-Themen 16
M Properties Eintrag löschen, welcher in der JList "ausgewählt" wurde Java Basics - Anfänger-Themen 2
c_sidi90 File Array an Jlist übergeben Java Basics - Anfänger-Themen 11
J JList Inhalt nach JButton Klick aktualisieren Java Basics - Anfänger-Themen 8
B JList und JTable: leere Zeilen bei listfiles(); Java Basics - Anfänger-Themen 5
N DefaultListModel auf JList sortieren Java Basics - Anfänger-Themen 7
A JList mit Überschrift Java Basics - Anfänger-Themen 2
K Scrollbalken in JList funktioniert nicht Java Basics - Anfänger-Themen 9
B JList wird nicht aktualisiert bzw hat keine Items Java Basics - Anfänger-Themen 2
D JList nicht sichtbar Java Basics - Anfänger-Themen 4
B JList mit Scrollbar? Java Basics - Anfänger-Themen 7
K Datenbindung an JTable, JList, Primärschlüssel verstecken Java Basics - Anfänger-Themen 4
M JList Event Java Basics - Anfänger-Themen 5
M JList Index selektieren ausschalten. Java Basics - Anfänger-Themen 7
M ArrayList<int[]> - Problem mit JList! Java Basics - Anfänger-Themen 27
M JList + ListModel Java Basics - Anfänger-Themen 26
L JList Aktualisieren funktioniert nur Zufällig Java Basics - Anfänger-Themen 3
T JList aktualisieren Java Basics - Anfänger-Themen 12
T alle Ordner in einem Ordner in JList anzeigen Java Basics - Anfänger-Themen 3
R .Jpg anzeigen lassen nach klick in JList Java Basics - Anfänger-Themen 11
F Hilfe! JList Inhalte vertauschen Java Basics - Anfänger-Themen 2
A Eintrag einer JLIST speichern Java Basics - Anfänger-Themen 3
A Anordnung von JList Elementen Java Basics - Anfänger-Themen 3
B JList wird nach Ändern weiß Java Basics - Anfänger-Themen 11
B Einträge im JList einfügen Java Basics - Anfänger-Themen 9
S JList mit icons UND strings für Dialogbox Java Basics - Anfänger-Themen 2
hdi Fehler beim Model-Update einer JList (DefaultListModel) Java Basics - Anfänger-Themen 3
DStrohma Index einer markierten Zeile aus einer JList bekommen? Java Basics - Anfänger-Themen 5
P JList in JPanel anzeigen Java Basics - Anfänger-Themen 2
hdi Synchronisation zwischen JList und ListModel Java Basics - Anfänger-Themen 6
D Suche in JList nach dem ersten Buchstaben Java Basics - Anfänger-Themen 2
hdi JList mit Model und Observer -> Chaos, blicke nicht durch Java Basics - Anfänger-Themen 22
1 JList Problem : Synchronisation mit Vector klappt nicht :( Java Basics - Anfänger-Themen 6
G Elemente aus jList entferne. Java Basics - Anfänger-Themen 2
G JList updaten Java Basics - Anfänger-Themen 7
K jList scrollPane Java Basics - Anfänger-Themen 2
7 Java Swing: Wie JScrollPane zur JList hinzufügen? Java Basics - Anfänger-Themen 12
K JList verschiebt sich Java Basics - Anfänger-Themen 7
G String in JList Java Basics - Anfänger-Themen 11
T Jlist Object hinzufügen Java Basics - Anfänger-Themen 2
B Auslesen der JList Java Basics - Anfänger-Themen 11
S jList Multiple Selection mit Klick Java Basics - Anfänger-Themen 2
M Dateien in einem Ordner, JList Java Basics - Anfänger-Themen 7
G JList größe verändert sich Java Basics - Anfänger-Themen 2
M JList Parameter verschieben Java Basics - Anfänger-Themen 3
C jList - Zeile Markieren - jList.setSelectedIndex(wert); Java Basics - Anfänger-Themen 3
G JList mit LinkedList füllen Java Basics - Anfänger-Themen 2
G JList Mehrfachselektion Java Basics - Anfänger-Themen 6
N 2 spaltige JList, mit dynamischen Inhalt Java Basics - Anfänger-Themen 4
P JList mit setListData(<Vector>) Java Basics - Anfänger-Themen 7
J GUI mit JList Java Basics - Anfänger-Themen 2
N drag and drop mit JList Java Basics - Anfänger-Themen 5
G 1. Buchstabe eines JList eintrages verschieden farbig machen Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben