java - 如何使用 Swings 在 Java Paint 中的选定区域中执行鼠标单击操作

标签 java swing graphics

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

}

最佳答案

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

关于java - 如何使用 Swings 在 Java Paint 中的选定区域中执行鼠标单击操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3438956/

相关文章:

Java 8 等同于 Streams 的 getLineNumber()

java - 如何确保用户不输入字母

java - 在 Java 中使用 CardLayout

java - swing mappanel map 刷新

java - 什么是 sun.awt.image.BufImgSurfaceData?

python - 使用python高效绘制线条

Java图形化减半机制故障

java - Spring批量返回自定义进程退出码

java - 下面的java多线程例子总是死锁

java - 刷新JTable firetableDataChanged未执行