如何检查jPanel是否被按下?
问题描述:
我有JPanel叫做panelCrtanje
。 如果按下,我需要更改cBox状态。如何检查jPanel是否被按下?
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);
}
PadDraw看起来像这样
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
当点击鼠标时这些方法:的mouseClicked 当鼠标被按下但未被移动:mousePressed 当鼠标被释放时:mouseReleased 当鼠标进入窗口时:mouseEntered 当鼠标离开窗口时:mouseExited
这就是你如何使用mouseListener做不同的事情。
答
您应该在panelCartanje
上注册MouseListener
,我已经使用匿名内部类来执行此操作。
答
这是解决
MouseAdapter adap = new MouseAdapter(){
public void mousePressed(MouseEvent e) {
slikaC.setSelected(true);
}
};
如何检查是否被按下的JPanel? ==从这里发布的代码是不可能的,但有两种选择:1.阅读有关MouseListener的Oracle教程,2.更快地发布SSCCE/MCVE,更短的,可运行的,可编译的 – mKorbel 2014-09-27 11:41:57