错误的Mouselistener开火了

时间:2012-03-01 15:04:36

标签: java swing components jpanel mouselistener

我在Java中创建了一个程序,您可以在其中绘制椭圆和矩形,然后将它们分组以对它们执行“调整大小”和“移动”操作。

我将MouseListener添加到DrawPanel(JPanel)作为所有创建的形状(该drawPanel上的组件)。但是在我将几个形状组合在一起后,似乎向后推MouseListener并且MouseListenerMainFrame相关联。

我已经解决了JPanel上的调用.GetCompontent()函数的问题。但肯定可以推进组件MouseListener

JPanel及其上的组件都使用相同的MouseListener

public class MainFrame extends JFrame implements ActionListener,MouseInputListener {        

public MainFrame() {
    super("Tekenprogramma");
    //some other stuf
    drawPanel.addMouseListener(this);
    drawPanel.addMouseMotionListener(this);
}

并在同一类中创建和添加形状时:

public void mousePressed(MouseEvent e) {
    if(e.getSource() == drawPanel) {
        Point pos = e.getPoint();
        switch(mode) {
//Some other cases...
        case RECTANGLE:
            shape = new Rectangle(pos);
            shape.addMouseListener(this);
            shape.addMouseMotionListener(this);
            storeAndExecute(new RectangleCommand(drawPanel,shape));

最初,形状会对自己的听众做出反应。但是在我删除并阅读它们之后(嵌套在没有MouseListener(组)的组件中)它们会停止触发并且drawPanel的{​​{1}}接管。

0 个答案:

没有答案