Java 如何检查jPanel是否被按下?

Java 如何检查jPanel是否被按下?,java,swing,jpanel,Java,Swing,Jpanel,我让JPanel打电话给panelCrtanje。 如果按下,我需要更改cBox状态 final PadDraw drawPad = new PadDraw(); panelCrtanje.setLayout(new BorderLayout()); panelCrtanje.add(drawPad, BorderLayout.CENTER); 在我使用以下方法将drawPad添加到panelCrtanje之前,它可以工作: private void panelCrtanjeMousePres

我让JPanel打电话给
panelCrtanje
。 如果按下,我需要更改cBox状态

final PadDraw drawPad = new PadDraw();
panelCrtanje.setLayout(new BorderLayout());
panelCrtanje.add(drawPad, BorderLayout.CENTER);
在我使用以下方法将drawPad添加到panelCrtanje之前,它可以工作:

private void panelCrtanjeMousePressed(java.awt.event.MouseEvent evt) {                                          
 slikaC.setSelected(true);
}
帕德劳看起来像这样

public PadDraw(){
    setDoubleBuffered(false);
    addMouseListener(new MouseAdapter(){
        public void mousePressed(MouseEvent e){
            oldX = e.getX();
            oldY = e.getY();
        }
    });

    addMouseMotionListener(new MouseMotionAdapter()){
        public void mouseDragged(MouseEvent e){
            currentX = e.getX();
            currentY = e.getY();
            if(graphics2D != null) {
             graphics2D.setStroke(new BasicStroke(18F,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND));
            graphics2D.drawLine(oldX, oldY, currentX, currentY);
            repaint();
            oldX = currentX;
            oldY = currentY;
            }
        }

    });
}

你需要正确使用MouseEvent。要使用它,类需要实现MouseListener。然后需要为鼠标事件创建一个侦听器,如下所示:

panelCrtanje.addMouseListener();
然后使用MouseListener和MotionMouseListener中所需的这些方法

@Override
public void mouseClicked(java.awt.event.MouseEvent e) {
    // TODO In HERE do what you want to do

}

@Override
public void mousePressed(java.awt.event.MouseEvent e) {
    // TODO Auto-generated method stub

}

@Override
public void mouseReleased(java.awt.event.MouseEvent e) {
    // TODO Auto-generated method stub

}

@Override
public void mouseEntered(java.awt.event.MouseEvent e) {
    // TODO Auto-generated method stub

}

@Override
public void mouseExited(java.awt.event.MouseEvent e) {
    // TODO Auto-generated method stub
单击鼠标时:鼠标单击 按住鼠标但不移动时:按住鼠标 释放鼠标时:鼠标释放 当鼠标进入窗口时:鼠标已插入 当鼠标离开窗口时:mouseExited


这就是如何使用mouseListener来做不同的事情。

您应该在
panelCartanje
上注册一个
mouseListener
,我使用了一个匿名的内部类来做这件事

    panelCrtanje.addMouseListener(new MouseAdapter(){
        @Override
        public void mousePressed(MouseEvent e) {
            /// cBox state change goes here . . .
        }

    }); 
这就是解决办法

    MouseAdapter adap = new MouseAdapter(){
        public void mousePressed(MouseEvent e) {
        slikaC.setSelected(true);
    }
    };

如何检查是否按下了jPanel?==从这里发布的代码是不可能的,但有两个选择1。阅读Oracle关于MouseListener的教程,2。为了获得更好的帮助,请尽快发布SSCCE/MCVE,简短、可运行、可编译