これは私のコードです: マウスの右ボタンをクリックし、test1 を選択すると、コードが JLabel を作成し、その位置に配置します。
public class Test extends JFrame {
int x;
int y;
JPopupMenu menu = new JPopupMenu("Popup");
class MyLabel extends JLabel {
public MyLabel(String text) {
super(text);
addMouseListener(new PopupTriggerListener());
}
class PopupTriggerListener extends MouseAdapter {
public void mousePressed(MouseEvent ev) {
if (ev.isPopupTrigger()) {
menu.show(ev.getComponent(), ev.getX(), ev.getY());
x = ev.getX();
y = ev.getY();
}
}
public void mouseReleased(MouseEvent ev) {
if (ev.isPopupTrigger()) {
menu.show(ev.getComponent(), ev.getX(), ev.getY());
x = ev.getX();
y = ev.getY();
}
}
public void mouseClicked(MouseEvent ev) {
}
}
}
JLabel label = new MyLabel("right-click");
public Test() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JMenuItem item = new JMenuItem("Test1");
item.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Menu item Test1");
JLabel newLabel = new JLabel("test");
label.add(newLabel);
newLabel.setBounds(x, y, 40, 10);
}
});
menu.add(item);
item = new JMenuItem("Test2");
item.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Menu item Test2");
}
});
menu.add(item);
getContentPane().add(label);
pack();
setSize(300, 100);
}
public static void main(String[] args) {
new Test().setVisible(true);
}
しかし、後でそのラベルにアクセスする方法がわかりません(たとえば、テキストを変更するため)。ユーザーが右ボタンでクリックして「削除」を選択すると、作成されたラベルを削除することもできますが、actionPerformed コード netbeans では、別の actionListener を追加できません。ありがとう