1.点击newItem,生成一个面板
2.点击buttonNode后,鼠标在面板上点击会在点击位置生成一个label,点击一次生成一个(但我生成下一个label之后,前一个label的位置总是要回到初始化的位置,不知道怎么固定)
3.点击buttonSelect之后,可以拖动任意一个label(试了多种方法,要么只能拖动最后一个添加的label,要么就是所有label都在一起动)
4.还有一个问题,如果点击了buttonSelect之后再点击buttonNode,每次就会生成多个label,不知道怎么解决。
刚开始学做这个,有很多地方都不懂,请大家多多指教 @_@
public void actionPerformed(ActionEvent e) {
Object eventSource = e.getSource();
if(eventSource == newItem){
System.out.println("xinjian");
getContentPane().add(panel,BorderLayout.CENTER);
getContentPane().validate();
panel.setBackground(Color.WHITE);
}
else if(eventSource == buttonNode){
buttonNode.setEnabled(false);
System.out.println("jiedianshijian");
panel.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
System.out.println("点击面板生成jdlabel");
node_count++;
System.out.println("node_count="+node_count);
i = node_count - 1;
System.out.println("i="+i);
panel.add(newLabelNode[i]);
panel.validate();
newLabelNode[i].setLocation(e.getX(), e.getY());
System.out.println("当前jd的位置:"+e.getX()+","+e.getY());
}
});
}
else if(eventSource == buttonSelect){
buttonSelect.setEnabled(false);
buttonNode.setEnabled(true);
System.out.println("xuanzeshijian");
for(i = 0;i < node_count;i++){
newLabelNode[i].addMouseListener(this);
}
}
}
@Override
public void mouseEntered(MouseEvent e) {
for(i = 0;i < node_count;i++){
if(e.getSource() == newLabelNode[i]){
newLabelNode[i].setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
newLabelNode[i].addMouseMotionListener(new MouseMotionAdapter(){
public void mouseDragged(MouseEvent e){
for(i = 0;i < node_count;i++){
System.out.print("拖动第" + i + "个jd");
p[i] = newLabelNode[i].getLocation();
newLabelNode[i].setLocation(p[i].x+(e.getX()-origin[i].x), p[i].y+(e.getY()-origin[i].y));
}
}
});
}
}
}
public void mousePressed(MouseEvent e) {
origin[i].x = e.getX();
origin[i].y = e.getY();
System.out.println("这是第"+i+"个jd:"+e.getX()+","+e.getY());
}
public void mouseExited(MouseEvent e){
for(i = 0;i < node_count;i++){
newLabelNode[i].setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
}
}