Как проверить, нажата ли jPanel?

1

У меня есть 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;
            }
        }

    });
}
  • 2
    Как проверить, нажата ли jPanel? == из кода, размещенного здесь, невозможно, но есть два варианта: 1. прочитать руководство Oracle по MouseListener, 2. чтобы лучше помочь, опубликуйте SSCCE / MCVE, краткий, запускаемый, компилируемый
Теги:
swing
jpanel

3 ответа

1
Лучший ответ

Вам необходимо правильно использовать 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 для выполнения разных действий.

0

Это было решение

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

вы должны зарегистрировать MouseListener на panelCartanje, я использовал анонимный внутренний класс для этого.

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

    }); 

Ещё вопросы

Сообщество Overcoder
Наверх
Меню