Java源码-屏幕分辨率测试程序(Mouse Tracker with screen resolution validation)

程序功能:

Java How To Program第12章-GUI控件(上篇)中的一个示例,演示了鼠标事件的监控,包括:

1. 单击(click-按下某个鼠标键(左/中/右键)后松开)

2. 移动(move-不按下任何鼠标键的同时,移动鼠标)

3. 拖(drag-按下左/中/右键后不松开,并移动鼠标)

4. 放(release-拖操作之后,松开左/中/右键)。

 

程序会监控各种鼠标操作发生的位置,在移动操作中,将鼠标移动到屏幕最右下角,可看到X坐标和Y坐标同时达到最大值(1919,982)。

由于JFrame窗口最大化后并没有遮住Windows任务栏,任务栏的高度并没有加入到Y坐标,由此推出屏幕分辩率为1920*1080P,高清屏,嘿嘿。

运行结果示例:

1. 鼠标进入JPanel区域(这个并不好测试,但说明了一个问题:很缓慢地移动鼠标时,可以只移动单个像素!

2. 移动鼠标

 

代码如下:

 

//Fig. 12.28: MouseTrackerFrame.java
//Mouse event handling.
import java.awt.Color;
import java.awt.BorderLayout;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class MouseTrackerFrame extends JFrame
{
private final JPanel mousePanel; // panel in which mouse events occur
private final JLabel statusBar; // displays event information

// MouseTrackerFrame constructor sets up GUI and 
// registers mouse event handlers
public MouseTrackerFrame()
{
   super("Demonstrating Mouse Events");

   mousePanel = new JPanel(); 
   mousePanel.setBackground(Color.WHITE); 
   add(mousePanel, BorderLayout.CENTER); // add panel to JFrame

   statusBar = new JLabel("Mouse outside JPanel"); 
   add(statusBar, BorderLayout.SOUTH); // add label to JFrame

   // create and register listener for mouse and mouse motion events
   MouseHandler handler = new MouseHandler(); 
   mousePanel.addMouseListener(handler); 
   mousePanel.addMouseMotionListener(handler); 
} 

private class MouseHandler implements MouseListener, 
   MouseMotionListener 
{
   // MouseListener event handlers
   // handle event when mouse released immediately after press
   @Override
   public void mouseClicked(MouseEvent event)
   {
      statusBar.setText(String.format("Clicked at [%d, %d]", 
         event.getX(), event.getY()));
   } 

   // handle event when mouse pressed
   @Override
   public void mousePressed(MouseEvent event)
   {
      statusBar.setText(String.format("Pressed at [%d, %d]", 
         event.getX(), event.getY()));
   }

   // handle event when mouse released 
   @Override
   public void mouseReleased(MouseEvent event)
   {
      statusBar.setText(String.format("Released at [%d, %d]", 
         event.getX(), event.getY()));
   }

   // handle event when mouse enters area
   @Override
   public void mouseEntered(MouseEvent event)
   {
      statusBar.setText(String.format("Mouse entered at [%d, %d]", 
         event.getX(), event.getY()));
      mousePanel.setBackground(Color.GREEN);
   }

   // handle event when mouse exits area
   @Override
   public void mouseExited(MouseEvent event)
   {
      statusBar.setText("Mouse outside JPanel");
      mousePanel.setBackground(Color.WHITE);
   }

   // MouseMotionListener event handlers
   // handle event when user drags mouse with button pressed
   @Override
   public void mouseDragged(MouseEvent event)
   {
      statusBar.setText(String.format("Dragged at [%d, %d]", 
         event.getX(), event.getY()));
   } 

   // handle event when user moves mouse
   @Override
   public void mouseMoved(MouseEvent event)
   {
      statusBar.setText(String.format("Moved at [%d, %d]", 
         event.getX(), event.getY()));
   } 
} // end inner class MouseHandler

public static void main(String[] args)
{ 
   MouseTrackerFrame mouseTrackerFrame = new MouseTrackerFrame(); 
   mouseTrackerFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   mouseTrackerFrame.setSize(300, 100); 
   mouseTrackerFrame.setVisible(true); 
} 

} // end class MouseTrackerFrame

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值