2011-02-18 50 views
0

我的作業是如何才能對Java applet中的鼠標事件做出反應,然後進行相應的繪製?

寫一個繪製圖14-32左邊所示的房子的小程序。當用戶點擊門或窗戶時,他們應該關閉。右側的圖顯示了房門關閉的門和窗戶。

我基本上想要一個Java Applet,其中,如果用戶點擊矩形,另一個突然創建和繪製。

這是我的代碼到目前爲止。

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 

public class test2 extends JApplet 
{ 
    private final int currentX = 0; 


    public void init() 
    { 
     addMouseListener(new MyMouseListener()); 
    } 

    public void paint (final Graphics g) 
    { 
     super.paint (g); 

     g.drawRect(100, 100, 200, 200); 
    } 

    private class MyMouseListener extends MouseAdapter 
    { 

     currentX = e.getX(); 
    } 
} 
+8

而你的問題是? 「親愛的Stackoverflow,請爲我做作業」? – Matten 2011-02-18 09:08:16

+1

有什麼問題?你已經有了代碼,所以...什麼? – Kissaki 2011-02-18 09:10:35

回答

1

看看Java Tutorial | How to Write a Mouse Listener。它將幫助您確定用戶點擊的時間和地點。一旦你有了這些(x,y)座標,你就可以檢查它們是否位於窗戶或門內,如果是這樣,畫一些其他的東西。

示例代碼:

public void mouseClicked(MouseEvent e) { 
     int x = e.getX(); 
     int y = e.getY(); 

     //check if (x,y) lie in a certain rectangle 
     if(x>100 && x<300 && y>100 && y<300){ 
      //set a variable and repaint 
      closeDoors = true; 
      repaint(); 
     } 
    } 

在你的paint方法,你需要檢查closeDoors變量設置,如果是這樣,吸取別的東西。

public void paint (final Graphics g){ 
    super.paint (g); 
    g.drawRect(100, 100, 200, 200); 
    if(closeDoors){ 
     g.fillRect(100, 100, 200, 200); 
    } 
} 
0

當用戶點擊門或窗,則檢查是否鼠標座標是門或窗區域內,如果是的話,您可以通過更換一個敞開的門或打開的窗口中繪製一個封閉的圖紙,然後看起來像:他們應該關閉

所以,這是你必須做的:

  • 的「家」模型包括建築物,門和窗,由座標表示的
  • 「門」和「窗口」即可無論是在畫「打開」或「關閉」模式
  • 你需要測試方法來檢查,如果鼠標單擊發生「開」 windoww或「開」門

提示:您當前的MouseListener實現根本不起作用。您必須重寫MouseAdapter中的方法,並將測試置於適當的方法中。

相關問題