2016-05-12 18 views
-1

Ich habe die Frage in How do I create a right click context menu in Java Swing? beantwortet gesehen und gesehen, wie ich ein Menü erstellen kann. Wenn ich es jedoch mit dem Textbereich verknüpfe, ist es egal, ob etwas darauf geschrieben ist oder nicht, es zeigt immer das Menü an.Erstellen Sie ein Rechtsklick-Popup-Menü in einem Textbereich nur, wenn es nicht leer ist und den ausgewählten Index

Ich benutze den Textbereich, um anzuzeigen, wie viele Objekte ich aus einer bestimmten Klasse (die ich in einer ArrayList speichern) erstellt habe. Was ich brauche, ist ein Menü, das beim Klicken auf eine bestimmte Textzeile den Index des Objekts in der ArrayList haben und dieses Menü verwenden kann, um das angegebene Objekt von der ArrayList zu bearbeiten/zu entfernen. Ist das mit einem Textbereich möglich oder sollte ich eine andere Art von Anzeigekomponente verwenden?

Als Beispiel:

Textbereich:

Objekt 1.

Objekt 2.

Objekt 3.

Wenn ich wählen, zum Beispiel, Objekt 1 mit ein Rechtsklick, es zeigt das Menü mit Bearbeiten und Entfernen. Aber wenn ich keine von ihnen auswähle, wird das Menü nicht angezeigt. Und wenn es zeigt, kann es den Index od das Objekt zuzugreifen (Objekt 1 -> Index 0, Objekt 2 -> Index 1 usw.)

Vielen Dank für Ihre Hilfe, Nhekas

+0

Es ist nicht schwer zu tun. Probieren Sie es aus und wenn Sie ein Problem haben, fragen Sie uns. –

+0

Ich habe es versucht, und was ich nicht tun kann, ist der Ort, den ich bekomme von der Maus (MouseEvent.getPoint()) und welche Zeile entspricht es in der JTextArea, vor allem weil, da es in einem ScrollPane ist, wenn ich nach unten scrollen, Der getPoint() ändert sich nicht, wenn ich auf denselben Ort klicke. – Nhekas

+0

Sehen Sie sich die getViewPosition-Methode von JScrollPane an. – FredK

Antwort

1

ich verwende den Textbereich zu zeigen, wie viele Objekte, die ich von einer bestimmten Klasse erstellt haben

keine JTextArea anwenden.

Stattdessen würde ich vorschlagen, dass Sie eine JList verwenden sollten. Lesen Sie den Abschnitt aus dem Swing-Tutorial unter How to Use Lists für weitere Informationen und Beispiele.

Die JList hat eine locationToIndex(...) Methode, die Ihnen die Zeile gibt, wo die Maus geklickt wurde. Dann können Sie das Objekt aus der Liste abrufen.

+0

Oh schön! Danke vielmals! Das macht es einfacher! – Nhekas