Как я могу получить событие нажатия мыши в Java на кнопку - PullRequest
0 голосов
/ 11 июня 2018

Я создаю программу на Java и хотел бы создать свой собственный класс кнопок, а не использовать JButton.Я разобрался со всей эстетикой, но я не уверен, как вызвать событие нажатия мыши в Java.Это мой код:

// Button.java
package cella;

import java.awt.Color;
import java.awt.Point;
import java.awt.Graphics;

import java.awt.event.MouseEvent;

public class Button extends MouseAdapter {
    int x, y, w, h;
    String ph, val;
    boolean mouseDown;
    Color LIGHTGRAY = new Color(200, 200, 200);
    public Button(int xt, int yt, int wt, int ht, String pht, String valt) {
        x = xt;
        y = yt;
        w = wt;
        h = ht;
        ph = pht;
        val = valt;
        mouseDown = false;
    }

    public void draw(Graphics g, Point mouse) {
        if (contains(mouse)) {
            g.setColor(Color.GRAY);
        } else {
            g.setColor(LIGHTGRAY);
        }
        g.fillRect(x, y, w, h);
        g.setColor(Color.BLACK);
        g.drawRect(x, y, w, h);
        g.drawString(ph, x + 5, y + h - 5);
    }   

    private boolean contains(Point pos) {
        if (pos.x > x && pos.x < x + w && pos.y > y && pos.y < y + h) {
            return true;
        } else {
            return false;
        }
    }
    public boolean pressed(Point pos) {
        if (contains(pos) && mouseDown) {
            System.out.println("Pressed");
            return true; 
        }
        else return false;
    }
}

Булево значение mouseDown будет установлено на true при нажатии мыши, а затем false при отпускании, однако я не могу найти способ перехватить эти события, mouseListenerвыдает ошибки о необходимости абстрактных классов, когда я пытаюсь это реализовать.Спасибо за любую помощь, вы можете дать мне.

Полный код

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Вы можете добавить слушателя к вашей кнопке, которая обрабатывает событие.

JButton button = new JButton("Click for Stuff");

button.addMouseListener(new MouseAdapter() {
  public void mouseClicked(MouseEvent e) {
    switch(e.getButton())
     { 
      case MouseEvent.NOBUTTON : // do stuff on button release
           break;
      case MouseEvent.BUTTON1 : // do stuff on click
           break;

     }
  }
});
0 голосов
/ 11 июня 2018

Попробуйте.

JButton button = new JButton("Click!");

button.addMouseListener(new MouseAdapter() {
  public void mouseClicked(MouseEvent e) {
    if (e.getButton() == MouseEvent.NOBUTTON) {
      textArea.setText("No button clicked...");
    } else if (e.getButton() == MouseEvent.BUTTON1) {
      textArea.setText("Button 1 clicked...");
    } 

  }
});

См. Доступные методы

Надеюсь, эта помощь!

...