编个小程序,完成一个图上面画一个点,给点标一个名字并且保存下来。可用任一一种语言编写,请写出源代码。

编个小程序,完成一个图上面画一个点,给点标一个名字并且保存下来。可用任一一种语言编写,请写出源代码。,第1张

import java.awt.event.MouseEvent

import java.awt.event.MouseListener

import javax.swing.*

import java.awt.*

import java.util.LinkedList

public class DrawPoint extends JFrame implements MouseListener{

private LinkedList<Point> list//新建一个Point类型的链表存储用于存储“节点

private final int WIDTH=318,HEIGHT=340

private Dimension scrnsize

private Toolkit toolkit = Toolkit.getDefaultToolkit()

public DrawPoint() {

// TODO Auto-generated constructor stub

list=new LinkedList<Point>()//链表初始化

//窗口设置部分,不比细究

this.setSize(WIDTH,HEIGHT)

this.setResizable(false)

this.setDefaultCloseOperation(EXIT_ON_CLOSE)

scrnsize = toolkit.getScreenSize()

setLocation(scrnsize.width / 2 - getWidth() / 2,

scrnsize.height / 2 - getHeight() / 2)

this.addMouseListener(this)//添加窗口鼠标监听

this.setVisible(true)

}

@Override

public void mouseClicked(MouseEvent e) {

// TODO Auto-generated method stub

}

@Override

public void mouseEntered(MouseEvent e) {

// TODO Auto-generated method stub

}

@Override

public void mouseExited(MouseEvent e) {

// TODO Auto-generated method stub

}

@Override

public void mousePressed(MouseEvent e) {

// TODO Auto-generated method stub

}

@Override

public void mouseReleased(MouseEvent e) {

//为鼠标按钮释放添加事件处理

// TODO Auto-generated method stub

int x=e.getX()//获取鼠标的x坐标

int y=e.getY()//获取鼠标的y坐标

String str=JOptionPane.showInputDialog(null, "请输入改点标记文字")

//显示对话框,根据用户输入得到标记文字

if(str!=null){//若标记文字不为空,则该点视为有效点,将该点加入链表

list.add(new Point(x,y,str))

}

repaint()//用该函数调用paint()方法,进行重构 *** 作

this.validate()

}

public void paint(Graphics g){

if(list.isEmpty())//如果链表为空,不进行任何 *** 作,直接返回

return

for(Point p:list){//遍历数组,获取所有节点

g.drawOval(p.getX(), p.getY(), 2, 2)//先画点

g.drawString(p.getS(), p.getX()+5, p.getY()+6)//再标注节点的描述性文字

}

}

public static void main(String args[]){

DrawPoint p=new DrawPoint()

}

}

class Point {//节点类,包含x坐标,y坐标,描述性文字3个属性

private int x,y//x坐标和y坐标

private String s//描述性文字

public Point(){

x=0

y=0

s=""

}

public Point(int x,int y,String s){

this.x=x

this.y=y

this.s=s

}

public int getX(){

return x

}

public int getY(){

return y

}

public String getS(){

return s

}

}

wx.createSelectorQuery()

基础库 1.4.0 开始支持,低版本需做兼容处理

返回一个SelectorQuery对象实例。可以在这个实例上使用select等方法选择节点,并使用boundingClientRect等方法选择需要查询的信息。

示例代码:

Page({

  queryMultipleNodes: function(){var query = wx.createSelectorQuery()

    query.select('#the-id').boundingClientRect()

    query.selectViewport().scrollOffset()

    query.exec(function(res){

      res[0].top       // #the-id节点的上边界坐标  res[1].scrollTop // 显示区域的竖直滚动位置})

  }

})

selectorQuery

selectorQuery 对象的方法列表:

方法 参数 说明

select selector 参考下面详细介绍

selectAll selector 参考下面详细介绍

selectViewport   参考下面详细介绍

exec [callback] 参考下面详细介绍

selectorQuery.select(selector)

在当前页面下选择第一个匹配选择器selector的节点,返回一个NodesRef对象实例,可以用于获取节点信息。

selector类似于CSS的选择器,但仅支持下列语法。

ID选择器:#the-id

class选择器(可以连续指定多个):.a-class.another-class

子元素选择器:.the-parent >#the-child.a-class

多选择器的并集:#a-node, .some-other-nodes

selectorQuery.selectAll(selector)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12085383.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存