Ein einfaches Fenster mit einem Button drin:


Hier ein Code mit der Möglichkeit ein Kontextmenü festzulegen:
import java.awt.FlowLayout;
import java.awt.event.MouseAdapter; // Import für das Layout
import java.awt.event.MouseEvent;
import javax.swing.*;
import javax.swing.JPopupMenu;
public class JPopupMenuExample {
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> { // Verwende invokeLater für Swing
JFrame fenster = new JFrame("Kontextmenü");
fenster.setSize(300, 300);
fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Wichtig!
// Verwende JButton statt AWT Button für Swing
JButton button = new JButton("Kontextmenü testen");
// Popup-Menü erstellen
JPopupMenu popupMenu = new JPopupMenu();
JMenuItem item1 = new JMenuItem("Option 1");
JMenuItem item2 = new JMenuItem("Option 2");
popupMenu.add(item1);
popupMenu.add(item2);
// ActionListener für die Menüelemente (Beispiel)
item1.addActionListener(e -> System.out.println("Option 1 gewählt"));
item2.addActionListener(e -> System.out.println("Option 2 gewählt"));
// MouseListener hinzufügen
button.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent evt) {
if (SwingUtilities.isRightMouseButton(evt)) {
popupMenu.show(evt.getComponent(), evt.getX(), evt.getY());
}
}
});
// Layout setzen, damit der Button sichtbar ist
fenster.setLayout(new FlowLayout());
fenster.add(button); // Button zum Fenster hinzufügen
fenster.setVisible(true);
});
}
}
Nun gibt es über das Kontextmenü die Möglichkeit den Button zu löschen:

import java.awt.FlowLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.*;
public class JPopupMenuExample {
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
JFrame fenster = new JFrame("Kontextmenü");
fenster.setSize(300, 300);
fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton button = new JButton("Kontextmenü testen");
JPopupMenu popupMenu = new JPopupMenu();
JMenuItem item1 = new JMenuItem("Option 1");
JMenuItem item2 = new JMenuItem("Option 2");
JMenuItem deleteItem = new JMenuItem("Button löschen");
popupMenu.add(item1);
popupMenu.add(item2);
popupMenu.addSeparator();
popupMenu.add(deleteItem);
item1.addActionListener(e -> System.out.println("Option 1 gewählt"));
item2.addActionListener(e -> System.out.println("Option 2 gewählt"));
deleteItem.addActionListener(e -> {
fenster.remove(button);
fenster.revalidate();
fenster.repaint();
});
button.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent evt) {
if (SwingUtilities.isRightMouseButton(evt)) {
popupMenu.show(evt.getComponent(), evt.getX(), evt.getY());
}
}
});
fenster.setLayout(new FlowLayout());
fenster.add(button);
fenster.setVisible(true);
});
}
}