0

これは私のコードです: マウスの右ボタンをクリックし、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 を追加できません。ありがとう

4

1 に答える 1