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 2013-05-04 09:55:59
每次單擊右鍵都可以更改菜單,但是您想在菜單中更改什麼? – isaach1000 2013-05-05 05:54:44