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를 추가 할 수 없습니다. 누구나 나를 도울 수 있습니까? 감사합니다
확인, 즉 잘 작동! 하지만 내 목적을 위해 나는 시간 동안 변경할 수있는 메뉴를 만들어야합니다. 오른쪽 버튼을 클릭 할 때마다 만들어지는 메뉴를 만들 수 있습니까? 노력하고 있어도 작동하지 않아 ... 도와 줄 수있어? 고마워요 – user2312976
오른쪽 버튼을 클릭 할 때마다 메뉴를 변경할 수는 있지만 메뉴에서 무엇을 변경 하시겠습니까? – isaach1000