首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

检查Java Swing中的点是否在线

在Java Swing中检查点是否在线,可以通过以下步骤完成:

  1. 获取鼠标点击事件的坐标点。
    • 在Java Swing中,可以通过监听鼠标点击事件来获取坐标点。使用MouseListener接口的mouseClicked()方法可以捕获鼠标点击事件,并获取点击位置的坐标。
  2. 判断点是否在线上。
    • 在数学中,可以使用直线的方程来判断一个点是否在线上。对于直线上的两个点A(x1, y1)和B(x2, y2),以及待判断的点C(x, y),可以通过计算点C到直线AB的距离来判断点C是否在线上。如果距离为0,则点C在线上。
    • 在Java中,可以使用线段的两点式方程来表示直线,然后使用点到直线的距离公式计算距离。
  3. 实现代码示例:import java.awt.*; import java.awt.event.*;

public class PointOnlineCheck extends Frame {

代码语言:txt
复制
   private int pointX;
代码语言:txt
复制
   private int pointY;
代码语言:txt
复制
   public PointOnlineCheck() {
代码语言:txt
复制
       setSize(400, 400);
代码语言:txt
复制
       setVisible(true);
代码语言:txt
复制
       addMouseListener(new MouseAdapter() {
代码语言:txt
复制
           public void mouseClicked(MouseEvent e) {
代码语言:txt
复制
               pointX = e.getX();
代码语言:txt
复制
               pointY = e.getY();
代码语言:txt
复制
               repaint();
代码语言:txt
复制
           }
代码语言:txt
复制
       });
代码语言:txt
复制
   }
代码语言:txt
复制
   public void paint(Graphics g) {
代码语言:txt
复制
       super.paint(g);
代码语言:txt
复制
       g.setColor(Color.RED);
代码语言:txt
复制
       g.fillOval(pointX - 5, pointY - 5, 10, 10);
代码语言:txt
复制
       int x1 = 100;  // 直线上的点A的x坐标
代码语言:txt
复制
       int y1 = 100;  // 直线上的点A的y坐标
代码语言:txt
复制
       int x2 = 300;  // 直线上的点B的x坐标
代码语言:txt
复制
       int y2 = 300;  // 直线上的点B的y坐标
代码语言:txt
复制
       int x = pointX;  // 待判断的点C的x坐标
代码语言:txt
复制
       int y = pointY;  // 待判断的点C的y坐标
代码语言:txt
复制
       // 计算点C到直线AB的距离
代码语言:txt
复制
       double distance = Math.abs((y2 - y1) * x - (x2 - x1) * y + x2 * y1 - y2 * x1) / Math.sqrt(Math.pow(y2 - y1, 2) + Math.pow(x2 - x1, 2));
代码语言:txt
复制
       if (distance == 0) {
代码语言:txt
复制
           g.drawString("点在线上", 150, 350);
代码语言:txt
复制
       } else {
代码语言:txt
复制
           g.drawString("点不在线上", 150, 350);
代码语言:txt
复制
       }
代码语言:txt
复制
   }
代码语言:txt
复制
   public static void main(String[] args) {
代码语言:txt
复制
       new PointOnlineCheck();
代码语言:txt
复制
   }

}

代码语言:txt
复制
  1. 代码解释:
    • 在上述代码中,创建了一个继承自Frame的PointOnlineCheck类,用于显示窗口和处理鼠标点击事件。
    • 在构造函数中,设置了窗口的大小和可见性,并添加了一个MouseListener来监听鼠标点击事件。
    • 在鼠标点击事件的处理方法中,获取了鼠标点击的坐标点,并调用repaint()方法来触发重绘。
    • 在paint()方法中,首先使用红色填充了鼠标点击的坐标点,然后计算了点C到直线AB的距离,并根据距离是否为0来判断点C是否在线上。
    • 最后,在main()方法中创建了PointOnlineCheck对象,启动了程序。

这个示例代码演示了如何在Java Swing中检查点是否在线上。对于更复杂的应用场景,可以根据具体需求进行扩展和优化。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何检查 Java 数组是否包含某个值 ?

参考链接: Java程序检查数组是否包含给定值 作者 |  沉默王二  本文经授权转载自沉默王二(ID:cmower)  在逛 programcreek 时候,我发现了一些专注细节但价值连城主题。...比如说:如何检查Java数组是否包含某个值 ?像这类灵魂拷问主题,非常值得深入地研究一下。  另外,我想要告诉大家是,作为程序员,我们千万不要轻视这些基础知识。...因为基础知识是各种上层技术共同基础,只有彻底地掌握了这些基础知识,才能更好地理解程序运行原理,做出更优化产品。  ...如何检查数组(未排序)是否包含某个值 ?这是一个非常有用并且经常使用操作。我想大家脑海中应该已经浮现出来了几种解决方案,这些方案时间复杂度可能大不相同。  ...你每个“在看”,我都认真当成了喜欢

8.9K20
  • JAVA学习Swing概述JFrame学习

    package com.swing; import java.awt.Color; import java.awt.Container; import java.awt.event.WindowAdapter...; /**  *1:Swing组件通常被称作"轻量级组件";  *  *2:窗体作为Swing应用程序组件承载体,处于非常重要位置,Swing中常用窗体包括  *JFrame,JDialog... *  *3:JFrame窗体是一个容器,它是Swing程序各个组件载体,可以将JFrame看作是承载这些  *Swing组件容器  *  *4:读者大致应该有这样一个概念  *Swing组件窗体通常和组件容器相关...JFrameTest();         jf.CreateJFrame("创建一个JFrame窗体");     } } //实例演示JLabel标签使用,实例化JLabel对象,然后将标签实例添加到容器...,然后可以设置容器布局, package com.swing; import java.awt.Color; import java.awt.Container; import javax.swing.JFrame

    1.6K90

    灵魂拷问:如何检查Java数组是否包含某个值 ?

    在逛 programcreek 时候,我发现了一些专注细节但价值连城主题。比如说:如何检查Java数组是否包含某个值 ?像这类灵魂拷问主题,非常值得深入地研究一下。...另外,我想要告诉大家是,作为程序员,我们千万不要轻视这些基础知识。因为基础知识是各种上层技术共同基础,只有彻底地掌握了这些基础知识,才能更好地理解程序运行原理,做出更优化产品。...如何检查数组(未排序)是否包含某个值 ?这是一个非常有用并且经常使用操作。我想大家脑海中应该已经浮现出来了几种解决方案,这些方案时间复杂度可能大不相同。...我先来提供四种不同方法,大家看看是否高效。...PS:关于“==”操作符和 equals() 方法,可以参照我另外一篇文章《如何比较 Java 字符串?》

    4.8K20

    检查句子数字是否递增

    给你一个表示句子字符串 s ,你需要检查 s 全部 数字是否从左到右严格递增(即,除了最后一个数字,s 每个 数字都严格小于它 右侧 数字)。...这些数字是按从左到右严格递增 1 < 3 < 4 < 6 < 12 。 示例 2: 输入:s = "hello world 5 x 5" 输出:false 解释:句子数字是:5, 5 。...这些数字不是严格递增。 示例 4: 输入:s = "4 5 11 26" 输出:true 解释:s 数字是:4, 5, 11, 26 。... token 之间由单个空格分隔 s 至少有 两个 数字 s 每个数字都是一个 小于 100 正 数,且不含前导零 s 不含前导或尾随空格 来源:力扣(LeetCode) 链接:https...解题 字符串切开,挑出数字,检查是否递增 class Solution: def areNumbersAscending(self, s: str) -> bool: nums

    1.6K20

    如何高效检查JavaScript对象是否存在

    在日常开发,作为一个JavaScript开发者,我们经常需要检查对象某个键是否存在。这看似简单,但其实有多种方法可供选择,每种方法都有其独特之处。...问题背景 假设我们有一个简单对象: const user = { name: 'John', age: 30 }; 我们想在访问name键之前检查是否存在: if (user.name)...} 直接访问一个不存在键会返回undefined,但是访问值为undefined键也是返回undefined。所以我们不能依赖直接键访问来检查是否存在。...==) 可读性不如其他方法 容易拼写错误'undefined' 使用in操作符 in操作符允许我们检查是否存在于对象: if ('name' in user) { console.log(user.name...); } 这种方法只会返回对象自身拥有的键,而不会检查继承属性: 只检查自身键,不包括继承 方法名清晰,容易理解 缺点是hasOwnProperty需要方法调用,在性能关键代码可能会有影响。

    10110

    如何在Java检查字符串是否为字母数字

    参考链接: Java程序检查字符是否为字母 You can check string is alphanumeric in Java using matches() method of Matcher...您可以使用Matcher类matchs()方法检查Java字符串是否为字母数字。 Matcher类由java.util.regex包提供。...在下面,我共享了一个简单Java程序,其中使用了一个字符串,并使用matches()方法对其进行检查。    ...Java程序检查字符串是否为字母数字 (Java Program to Check String is Alphanumeric or not)   java.util.regex.*; class AlphanumericExample...在上面的示例,我在matches()方法中使用了模式“ [a-zA-Z0-9] +”。 这意味着字符串可以包含介于a到z,A到Z和0到9之间字符。这里+表示字符串可以包含一个或多个字符。

    4.9K10

    如何检查 MySQL 是否为空或 Null?

    在MySQL数据库,我们经常需要检查某个列是否为空或Null。空值表示该列没有被赋值,而Null表示该列值是未知或不存在。...在本文中,我们将讨论如何在MySQL检查是否为空或Null,并探讨不同方法和案例。...案例研究案例1:数据验证在某个用户注册,我们希望验证是否有用户没有提供电子邮件地址。我们可以使用IS NULL运算符来检查该列是否为空。...我们还提供了案例研究,展示了在不同情境下如何应用这些技巧来检查是否为空或Null。通过合理使用这些方法,我们可以轻松地检查MySQL是否为空或Null,并根据需要执行相应操作。...希望本文对你了解如何检查MySQL是否为空或Null有所帮助。通过灵活应用这些方法,你可以更好地处理和管理数据库数据。祝你在实践取得成功!

    1K00

    如何检查 MySQL 是否为空或 Null?

    在MySQL数据库,我们经常需要检查某个列是否为空或Null。空值表示该列没有被赋值,而Null表示该列值是未知或不存在。...在本文中,我们将讨论如何在MySQL检查是否为空或Null,并探讨不同方法和案例。...案例研究案例1:数据验证在某个用户注册,我们希望验证是否有用户没有提供电子邮件地址。我们可以使用IS NULL运算符来检查该列是否为空。...我们还提供了案例研究,展示了在不同情境下如何应用这些技巧来检查是否为空或Null。通过合理使用这些方法,我们可以轻松地检查MySQL是否为空或Null,并根据需要执行相应操作。...希望本文对你了解如何检查MySQL是否为空或Null有所帮助。通过灵活应用这些方法,你可以更好地处理和管理数据库数据。祝你在实践取得成功!

    1.2K20

    JAVA学习Swing部分JDialog对话框窗体简单学习

    package com.swing; import java.awt.Color; import java.awt.Container; import java.awt.event.ActionEvent...; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JDialog; import...窗体时Swing组件对话框,  * JDialog功能就是是从一个窗体中弹出另一个窗体,就像是在使用浏览器时弹出的确定对话框一样  *  * 2:JDialog窗体和JFrame窗体类似,在使用时也需要调用...getContentPane()方法将  * 窗体转化为容器,然后在容器设置窗体特性  *  * 3:JDialog有五种构造方法,可以用来指定标题,窗体,和模式对话框  * @author biexiansheng...        jl.setHorizontalAlignment(JLabel.CENTER);//将标签文字置于标签中间位置         container.add(jl);//将标签添加到容器

    1.8K70

    检查 Python 给定字符串是否仅包含字母方法

    Python被世界各地程序员用于不同目的,如Web开发,数据科学,机器学习,并通过自动化执行各种不同过程。在本文中,我们将了解检查python给定字符串是否仅包含字符不同方法。...检查给定字符串是否仅包含字母不同方法 等阿尔法函数 这是检查 python 给定字符串是否包含字母最简单方法。它将根据字符串字母存在给出真和假输出。...这是一种非常简单方法,用于检查字符串是否仅包含字母。...: True ASCII 值 这是一个复杂方法,但它是查找字符串是否仅包含字母非常有效方法。...在ASCII,不同代码被赋予不同字符。因此,在此方法,我们将检查字符串是否包含定义范围内字符。

    22430

    初学java感想!你当初是否也是这样?

    从毕业后工作半年,发现生活轨迹正在一偏离自己理想,2017年底果断辞职,开始了零基础自学java 旅程(我是土木专业)。...我学习资料有视频(黑马历时5年... ...)和买大学java教材(一本教材、一本对应习题,有选择题、填空题、编程题)。...我们学习java过程,就是将一个本来和自己没有关系事物变成属于自己,不仅仅是会写看懂,更重要是在脑海里构建出整个java知识体系,每学习一项知识,就要在脑海里把它放到正确位置(比如它在哪用,...怎么用),这样它就有了活力,而不是生硬拼凑出来知识。...一步一个脚印,没有捷径可走,java基础很重要,不要觉得学它只是为了看得懂技术,打好基础也是很关键。学好java不仅仅是掌握它知识,想要有更高上限,重要是你思想。

    65560

    Java单例模式双重检查问题

    注意:当第二个线程进入 synchronized 块时,它并没有检查 instance 是否非 null。 双重检查锁定 为处理清单 3 问题,我们需要对 instance 进行第二次检查。...线程 2 获取 //1 处锁并检查 instance 是否为 null。...双重检查锁定问题是:并不能保证它会在单处理器或多处理器计算机上顺利运行。 双重检查锁定失败问题并不归咎于 JVM 实现 bug,而是归咎于 Java 平台内存模型。...由于当前内存模型定义,清单 7 代码无效。Java 语言规范(Java Language Specification,JLS)要求不能将 synchronized块代码移出来。...即使考虑了顺序一致性,大多数 JVM 也没有正确地实现 volatile。 第二值得展开讨论。假设有清单 9 代码: 清单 9.

    1.8K20

    javaList记录是否完全匹配方法

    今天要说是给List分组,然后用Map来封装,可能你看了以后还是有一些模糊。 先看一下项目结构图: ? User类是一个VO类,主要逻辑还是在MapTestBak上面。 运行效果: ?...原理图: 1.在starsList中有两组人,共三人 2.在dolList中有一组人,共两人 3.经过marched操作,最后匹配到一组人到result。即第一组人。 原理很简单。 ?...1 /** 2 * 3 */ 4 package com.b510.map; 5 6 import java.util.ArrayList; 7 import java.util.HashMap...; 8 import java.util.List; 9 import java.util.Map; 10 11 /** 12 * @author Hongten 13 * @created...; 32 } 33 return tempList; 34 } 在这个方法,这里使用了两个List(即:comList, comList1)来记录是否完全匹配。

    1.4K10
    领券