如何使用Swigs在java paint中的选定区域执行鼠标单击操作

如何使用Swigs在java paint中的选定区域执行鼠标单击操作,java,swing,graphics,Java,Swing,Graphics,(1) 不要在paint方法中创建mouseStener,现在在每次重新绘制时创建一个新的mouseStener。内部paint1()将是一个更好的地方 (2) 将侦听器添加到MouseAct对象。然后,当指针“在”您的帧上时,只要按下鼠标按钮,就会调用它 import java.awt.*; import java.awt.image.*; import javax.swing.*; import java.awt.event.*; public class MouseAct extends

(1) 不要在paint方法中创建mouseStener,现在在每次重新绘制时创建一个新的mouseStener。内部
paint1()
将是一个更好的地方

(2) 将侦听器添加到MouseAct对象。然后,当指针“在”您的帧上时,只要按下鼠标按钮,就会调用它

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(){

}

您不应该重写JFrame或任何Swing组件的paint()方法

自定义绘制是通过重写JComponent的paintComponent()方法完成的,然后将该组件添加到框架的内容窗格中。然后可以将鼠标侦听器添加到此组件中

有关更多信息,请阅读上的Swing教程部分。本教程还有一节介绍“如何编写鼠标侦听器”

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();
}