這個用MouseListener里的mouseEntered(MouseEvent
專注于為中小企業提供做網站、網站建設服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業鉛山免費做網站提供優質的服務。我們立足成都,凝聚了一批互聯網行業人才,有力地推動了成百上千家企業的穩健成長,幫助中小企業通過網站建設實現規模擴充和轉變。
e)方法。
鼠標進入區域就產生事件反應。
如果之前申明了點擊事件可以在entered時間里呼叫clicked事件。
你這樣不行啊,一閃一閃的根本看不到顯示效果或者更本沒有顯示,繪圖的方法要寫在paintComponent(Graphics g)里面才能長久保存。
我知道你想在mouseClicked里面做什么,但是在這里進行繪圖,repaint沒有立即被執行,所以有可能沒有任何顯示;如果repaint執行了,也很有可能立刻被后面的繪圖所覆蓋。最好的辦法是在這里出發一個標志,然后調用repaint函數,在paintComponent函數中對這個標志進行繪制,決定到底該怎么畫。
手寫了一段代碼,沒有編譯,你可以參考一下:
package colin;
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
public class JXFrame extends JFrame
{
boolean mouseCliked = false;
int x,y;
public void paintComponent(Graphics g)
{
if(mouseCliked )
{
g.setColor(255,255,0);//必須有這一步,否則畫筆顏色為默認背景色,是根本看不出任何線條效果的。
g.drawLine(0,0,x,y);
}
}
public void setPoint(int x,int y)
{
this.x = x;
this.y = y;
}
}
package colin;
import java.awt.*;
import javax.swing.*;
class frame{
frame(){
JXFrame f = new JXFrame();
f.addMouseListener(new Mouseevent(f));
f.setSize(500,600);
f.setVisible(true);
}
public static void main(String args[]){
new frame();
}
}
package colin;
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
public class Mouseevent implements MouseListener{
JXFrame parent;
public Mouseevnt(JXFrame parent){
this.parent = parent;
}
public void mousePressed(MouseEvent e){
}
public void mouseReleased(MouseEvent e){
this.parent.mouseCliked = false;
}
public void mouseEntered(MouseEvent e){
this.parent.mouseCliked = false;
}
public void mouseExited(MouseEvent e){
this.parent.mouseCliked = false;
}
public void mouseClicked(MouseEvent e){
this.parent.setPoint(e.getX(),e.getY());
this.parent.mouseCliked = true;
this.parent.repaint();
}
}
給你一個例子,太難講了
我自己寫的
package guidemo;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
/**
* pTitle: 圖形用戶界面/p
*
* pDescription: 簡單的圖形界面編程/p
*
* pCopyright: Copyright (c) 2006/p
*
* pCompany: /p
*
* @author vic
* @version 1.0
*/
public class ColorFrame extends Frame implements MouseListener {
Label L; //標簽
TextField T; //文本域
Button B1, B2; //按鈕
public ColorFrame() {
this.setLayout(null); //想要手動指定各組件的的位置
L = new Label("輸入學號:"); //設定標簽L內容
L.setBounds(60, 50, 50, 25); //設定標簽L外觀
this.add(L); //將標簽L添加到窗口中
T = new TextField("請在這里輸入"); //設定文本域T的內容
T.setBounds(125, 50, 90, 25); //設定文本域T的外觀
this.add(T); //將文本域T添加到窗口中
B1 = new Button("變紅!"); //設定按鈕B1的內容
B1.setBounds(25, 90, 90, 25); //設定按鈕B1的外觀
B1.addMouseListener(this);//在B1上注冊鼠標監聽器
this.add(B1); //將按鈕B1添加到窗口中
B2 = new Button("變綠!");
B2.setBounds(125, 90, 90, 25);
B2.addMouseListener(this);
this.add(B2);
WindowDestroyer Listener = new WindowDestroyer(); //創建關閉窗口監聽器
this.addWindowListener(Listener); //將監聽器添加到窗口中
this.setBackground(Color.yellow); //設定窗口背景顏色
this.setTitle("This is Frame!"); //設定窗口標題文字
this.setBounds(0, 0, 250, 220); //設定窗口位置和大小
this.setVisible(true); //顯示窗口
}
public void mouseClicked(MouseEvent e) {
if (e.getComponent() == B1) {//getComponent返回按鈕上面的字符串
this.setBackground(Color.red);
}
if (e.getComponent() == B2) {
this.setBackground(Color.green);
}
}
public void mouseExited(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public static void main(String[] args) {
new ColorFrame();
}
}
希望能解決您的問題。
使用組件的paint函數用于繪圖, 使用MouseListener來響應鼠標的點擊
效果圖
代碼
import?java.awt.Color;
import?java.awt.Graphics;
import?java.awt.event.*;
import?javax.swing.*;
public?class?DemoWin?extends?JFrame?{
public?DemoWin()?{
MyPanel?mp?=?new?MyPanel();
mp.addMouseListener(mp);
add(mp);
//?窗口屬性設置
setTitle("Demo");//?標題
setSize(300,?280);//?窗口大小
setLocationRelativeTo(null);//?窗口居中
setDefaultCloseOperation(EXIT_ON_CLOSE);//?窗口點擊關閉時,退出程序
}
public?static?void?main(String[]?args)?{
DemoWin?win?=?new?DemoWin();?//?創建窗口
win.setVisible(true);//?顯示窗口
}
class?MyPanel?extends?JPanel?implements?MouseListener?{
int?times;//?記錄點擊的次數
int?x;//?記錄鼠標X軸的位置
int?y;//?記錄鼠標Y軸的位置
@Override
public?void?paint(Graphics?g)?{
super.paint(g);
if?(times?==?0)?{
g.setColor(Color.BLUE);//?顏色
g.fillOval(150,?150,?50,?50);//?150,150代表位置?50,50代表寬高
}?else?if?(times?==?1)?{
g.setColor(Color.RED);
g.fillRect(150,?150,?50,?50);
}?else?{
g.setColor(Color.RED);
g.fillRect(x,?y,?50,?50);
}
repaint();
}
public?void?mouseClicked(MouseEvent?e)?{
//?if?(e.getButton()==MouseEvent.BUTTON1)?{//單擊左鍵時有效..
//?times++;//?記錄點擊的次數
//?x?=?e.getX();
//?y?=?e.getY();
//?}
}
public?void?mousePressed(MouseEvent?e)?{//?鼠標按下就有效
times++;//?記錄點擊的次數
x?=?e.getX();
y?=?e.getY();
}
public?void?mouseReleased(MouseEvent?e)?{//?鼠標釋放
}
public?void?mouseEntered(MouseEvent?e)?{//?鼠標移入
}
public?void?mouseExited(MouseEvent?e)?{//?鼠標移出
}
}
}
this.addMouseListener(new
MouseAdapter()
{
@Override
public
void
mousePressed(MouseEvent
e)
{
x
=
e.getX();
y
=
e.getY();
System.out.println("Xbefore:"+e.getX());
}
});
this.addMouseMotionListener(new
MouseMotionListener()
{
public
void
mouseDragged(MouseEvent
e)
{
JButton
btn
=
(JButton)
e.getSource();
setLocation(btn.getX()
+
e.getX()
-
x,
btn.getY()
+
e.getY()
-
y);
}
public
void
mouseMoved(MouseEvent
e)
{
}
});
上面的代碼是給JButton添加的鼠標事件,移動的是按鈕。。。
public?class?MouseClickEvent?extends?JFrame{
public?MouseClickEvent()?{
Container?container?=?getContentPane();
container.addMouseListener(new?MouseListener()?{
@Override
public?void?mouseReleased(MouseEvent?arg0)?{
int?buttonFlag?=?arg0.getButton();
switch?(buttonFlag)?{
case?MouseEvent.BUTTON1:
System.out.println("釋放的是鼠標左鍵!\n");
break;
case?MouseEvent.BUTTON2:
System.out.println("釋放的是鼠標滾輪!\n");
break;
case?MouseEvent.BUTTON3:
System.out.println("釋放的是鼠標右鍵!\n");
break;
}? ?
}
@Override
public?void?mousePressed(MouseEvent?arg0)?{
int?buttonFlag?=?arg0.getButton();
switch?(buttonFlag)?{
case?MouseEvent.BUTTON1:
System.out.println("按下的是鼠標左鍵!\n");
break;
case?MouseEvent.BUTTON2:
System.out.println("按下的是鼠標滾輪!\n");
break;
case?MouseEvent.BUTTON3:
System.out.println("按下的是鼠標右鍵!\n");
break;
}
}
@Override
public?void?mouseExited(MouseEvent?arg0)?{
System.out.println("光標移出應用程序窗口了!\n");? ?
}
@Override
public?void?mouseEntered(MouseEvent?arg0)?{
System.out.println("光標進入應用程序窗口了!\n");?
}
@Override
public?void?mouseClicked(MouseEvent?arg0)?{
int?buttonFlag?=?arg0.getButton();
switch?(buttonFlag)?{
case?MouseEvent.BUTTON1:
System.out.println("點擊的是鼠標左鍵!\n");
break;
case?MouseEvent.BUTTON2:
System.out.println("點擊的是鼠標滾輪!\n");
break;
case?MouseEvent.BUTTON3:
System.out.println("點擊的是鼠標右鍵!\n");
break;
}
int?clickCount?=?arg0.getClickCount();
System.out.println("點擊次數為"+clickCount+"\n");
}
});
}
public?static?void?main(String[]?args)?{
MouseClickEvent?testFrame?=?new?MouseClickEvent();
testFrame.setTitle("鼠標點擊事件測試程序!");
testFrame.setVisible(true);
testFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
testFrame.setBounds(0,?0,?500,?400);
}
}
新聞名稱:java鼠標點擊事件代碼 java鼠標點擊事件怎么寫
網頁URL:http://vcdvsql.cn/article22/doodjcc.html
成都網站建設公司_創新互聯,為您提供搜索引擎優化、、動態網站、面包屑導航、微信小程序、建站公司
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯