Java拖曳鼠標(biāo)實(shí)現(xiàn)畫(huà)線功能的方法
本文實(shí)例主要實(shí)現(xiàn)Java拖曳鼠標(biāo)畫(huà)線的功能,為了達(dá)到畫(huà)線的功能,分別用implements MouseListener與MouseMotionListener,并且由mousePressed(),mouseReleased()取得鼠標(biāo)拖曳的開(kāi)始與結(jié)束坐標(biāo)。這是一個(gè)掌握J(rèn)ava鼠標(biāo)事件的很好的范例。
具體實(shí)現(xiàn)代碼如下:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MouseDemo extends JFrame implements MouseListener,
MouseMotionListener {
int flag; //flag=1代表Mouse Moved,flag=2代表Mouse Dragged
int x = 0;
int y = 0;
int startx, starty, endx, endy;//起始坐標(biāo)與終點(diǎn)坐標(biāo)
public MouseDemo() {
Container contentPane = getContentPane();
contentPane.addMouseListener(this);
contentPane.addMouseMotionListener(this);
setSize(300, 300);
show();
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
/*由mousePressed(),mouseReleased()取得鼠標(biāo)拖曳的開(kāi)始與結(jié)束坐標(biāo)*/
public void mousePressed(MouseEvent e) {
startx = e.getX();
starty = e.getY();
}
public void mouseReleased(MouseEvent e) {
endx = e.getX();
endy = e.getY();
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mouseClicked(MouseEvent e) {
}
/*mouseMoved(),mouseDragged()取得鼠標(biāo)移動(dòng)的每一個(gè)坐標(biāo),并調(diào)用repaint()方法*/
public void mouseMoved(MouseEvent e) {
flag = 1;
x = e.getX();
y = e.getY();
repaint();
}
public void mouseDragged(MouseEvent e) {
flag = 2;
x = e.getX();
y = e.getY();
repaint();
}
public void update(Graphics g) {
g.setColor(this.getBackground());
g.fillRect(0, 0, getWidth(), getHeight()); //清除當(dāng)前的窗口內(nèi)容
paint(g);
}
public void paint(Graphics g) {
g.setColor(Color.black);
if (flag == 1) {
g.drawString("鼠標(biāo)坐標(biāo):(" + x + "," + y + ")", 10, 50);
g.drawLine(startx, starty, endx, endy);
}
if (flag == 2) {
g.drawString("拖曳鼠標(biāo)價(jià)坐標(biāo):(" + x + "," + y + ")", 10, 50);
g.drawLine(startx, starty, x, y);
}
}
public static void main(String[] args) {
new MouseDemo();
}
}
該程序在畫(huà)線過(guò)程中,拖拽時(shí)會(huì)顯示鼠標(biāo)坐標(biāo)。讀者還可以根據(jù)自身需求對(duì)該程序進(jìn)行修改和完善,使之更加具有實(shí)用性。
- java 2d畫(huà)圖示例分享(用java畫(huà)圖)
- java實(shí)現(xiàn)gif動(dòng)畫(huà)效果(java顯示動(dòng)態(tài)圖片)
- Java版畫(huà)板的實(shí)現(xiàn)方法
- JAVA GUI自定義JPanel畫(huà)板背景
- java和matlab畫(huà)多邊形閉合折線圖示例講解
- Java畫(huà)筆的簡(jiǎn)單實(shí)用方法
- Java實(shí)現(xiàn)兩人五子棋游戲(二) 畫(huà)出棋盤(pán)
- Java實(shí)現(xiàn)兩人五子棋游戲(三) 畫(huà)出棋子
- java實(shí)現(xiàn)圖像轉(zhuǎn)碼為字符畫(huà)的方法
- Java實(shí)現(xiàn)畫(huà)線、矩形、橢圓、字符串功能
相關(guān)文章
實(shí)現(xiàn)Java刪除一個(gè)集合的多個(gè)元素
Java中的For each實(shí)際上使用的是iterator進(jìn)行處理的。而iterator是不允許集合在iterator使用期間刪除的。而我在for each時(shí),從集合中刪除了一個(gè)元素,這導(dǎo)致了iterator拋出了ConcurrentModificationException,下面來(lái)看看到底怎么回事。2016-08-08
以實(shí)例簡(jiǎn)介Java中線程池的工作特點(diǎn)
這篇文章主要介紹了以實(shí)例簡(jiǎn)介Java中線程池的工作特點(diǎn),線程池是Java實(shí)現(xiàn)多線程編程的基礎(chǔ),需要的朋友可以參考下2015-09-09
java使用反射創(chuàng)建并操作對(duì)象的方法
這篇文章主要介紹了java使用反射創(chuàng)建并操作對(duì)象的方法,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-06-06
利用Java設(shè)置Word文本框中的文字旋轉(zhuǎn)方向的實(shí)現(xiàn)方法
Word文檔中可添加文本框,并設(shè)置文本框?yàn)闄M向文本排列或是縱向文本排列,或者設(shè)置文本框中的文字旋轉(zhuǎn)方向等.通過(guò)Java程序代碼,也可以實(shí)現(xiàn)以上文本框的操作.下面以Java代碼示例展示具體的實(shí)現(xiàn)步驟.另外,可參考C#及VB.NET代碼的實(shí)現(xiàn)方法,需要的朋友可以參考下2021-06-06
java實(shí)現(xiàn)隨機(jī)驗(yàn)證碼圖片生成
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)隨機(jī)驗(yàn)證碼圖片生成,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11
Spring?Boot源碼實(shí)現(xiàn)StopWatch優(yōu)雅統(tǒng)計(jì)耗時(shí)
這篇文章主要為大家介紹了Spring?Boot源碼實(shí)現(xiàn)StopWatch優(yōu)雅統(tǒng)計(jì)耗時(shí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
通過(guò)Spring自定義NamespaceHandler實(shí)現(xiàn)命名空間解析(推薦)
這篇文章主要介紹了通過(guò)Spring自定義NamespaceHandler實(shí)現(xiàn)命名空間解析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04
Java實(shí)現(xiàn)輸出數(shù)字三角形實(shí)例代碼
大家好,本篇文章主要講的是Java實(shí)現(xiàn)輸出三角形實(shí)例代碼,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2022-01-01

