Как выполнить щелчок мышью в выбранной области в Java Paint, используя качели - PullRequest
0 голосов
/ 09 августа 2010
import java.awt.*;
import java.awt.image.*;
import javax.swing.*;
import java.awt.event.*;
public class MouseAct extends JFrame{
  public static void main(String args[]){
    MouseAct M= new MouseAct();
    M.paint1();
  }
  public void paint1(){
    setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    setSize(640,480); // 
    show();
  }
  public void paint( Graphics g ){
    super.paint(g);
    Graphics2D g2=(Graphics2D)g;

    g.setColor(Color.black);
    g.fillRect(1,1,638,478);
    g.setColor(Color.white);
    g.drawRect(1,1,638,478);
    g.drawRect(100,100,100,100);
    MouseListener l = new MouseAdapter() {
      public void mousePressed(MouseEvent e) {
        MouseAct b = (MouseAct)e.getSource();
        System.out.println("source="+e.getSource());
        //   b.setSelected(true);
        b.repaint();            
      }

      public void mouseReleased(MouseEvent e) {
        MouseAct b = (MouseAct)e.getSource();
        //     b.setSelected(false);
        b.repaint();            
      }
    };
  }
  //    public void setSelected(){

}

Ответы [ 2 ]

1 голос
/ 09 августа 2010

Вы НЕ должны переопределять метод paint () JFrame или любого компонента Swing.

Пользовательское рисование выполняется путем переопределения метода paintComponent () JComponent, а затем вы добавляете компонент в содержимоепанель рамы.Затем к этому компоненту можно добавить MouseListener.

Прочтите раздел из учебника Swing по Custom Painting для получения дополнительной информации.В руководстве также есть раздел «Как написать слушателя мыши».

1 голос
/ 09 августа 2010

(1) не создавайте Mouselistener внутри метода рисования - теперь вы создаете новый на каждом перекрашивании.Внутри paint1() было бы лучше

(2) добавить слушателя к вашему объекту MouseAct.Затем он будет вызываться всякий раз, когда нажимается кнопка мыши, когда указатель находится над рамкой.

public void paint1(){
  setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
  setSize(640,480);
  MouseListener l = new MouseAdapter() { ... }  // add your code here
  addMouseListener(l); // this 'activates' the listener
  show();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...