JList mit der Rechten Maustaste zeigt das Menü (Verwenden, löschen, Abbrechen)
Ich habe scheuern im internet für diese Antwort. Ich habe eine einfache JList mit items drin. Wenn ich mit der rechten Maustaste klicken, ich möchte ein Menü, um pop-up, das sagt "Verwenden, löschen, Abbrechen" oder so etwas in der Natur. ALLERDINGS, bin ich überfragt.
Den code unten erzeugt ein einfaches JList mit ein paar items drin. Ich habe versucht, hinzufügen eines rechts-Klick in den code, aber es funktioniert nicht. Hilfe?
Hier ist was ich habe, so weit:
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseAdapter;
import javax.swing.*;
public class inv extends JApplet implements MouseListener {
JList listbox;
public void init()
{
String listData[] = { "Item 1","Item 2","Item 3","Item 4" };
listbox = new JList( listData );
listbox.addMouseListener( new MouseAdapter()
{
public void mousePressed(MouseEvent e)
{
if ( SwingUtilities.isRightMouseButton(e) )
{
listbox.setSelectedIndex(getRow(e.getPoint()));
}
}
});
listbox.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
add(listbox);
listbox.setVisible(true);
listbox.setFocusable(false);
}
private int getRow(Point point)
{
return listbox.locationToIndex(point);
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mouseClicked(MouseEvent e) {
}
public void stop()
{
}
public void paint(Graphics g)
{
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich weiß nicht, was du meinst. Hier ist der code, das scheint zu funktionieren, wie Sie angeben, aber abgesehen von der Entnahme einer beliebigen Anzahl von redundanten oder buggy Aussagen, es ist ziemlich viel, was du gepostet hast.
Ausgabe
Einer der typischen Fehler können rufen:
JPopupMenu.setVisible(true)
und erwarten, dass etwas passiert. Diese Komponente braucht eine andere Methode, um es aufzurufen. Schreiben Sie Ihre Maus-listener entlang der Linien:Machen Beispiel kurz zu machen, ich fügen Sie ein Element nur, aber sicherlich mehr Hinzugefügt werden können. Die show-Methode nutze ich auch benötigt, um festzulegen, wo auf der Komponente, die im Menü erscheinen soll. Die Lage kann man aus der Liste selbst, wie in diesem Beispiel zu sehen.
Sitz in den vorherigen Antworten, der folgende code würde sofort wählen Sie das Element (rechts klicken) und die Anzeige der pop-up neben der Maus klicken.
Gibt es einen kommentierten Abschnitt zeigt einen möglichen Weg, entfernen das Element; es nimmt die Existenz eines
ArrayList
(genanntarray_list
) enthält eine Kopie des elements auf derJList
. Es verwendet die Methodeto_array
um zu regenerierenJList
. Es sollte ein effizienter Weg, aber wenn die Liste kurz ist, sollte es ausreichend sein.