У меня есть 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);
}
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 для выполнения разных действий.
Это было решение
MouseAdapter adap = new MouseAdapter(){
public void mousePressed(MouseEvent e) {
slikaC.setSelected(true);
}
};
вы должны зарегистрировать MouseListener
на panelCartanje
, я использовал анонимный внутренний класс для этого.
panelCrtanje.addMouseListener(new MouseAdapter(){
@Override
public void mousePressed(MouseEvent e) {
/// cBox state change goes here . . .
}
});