2013-07-26 66 views
1

我必須開發一個應該執行心理實驗的Java swing應用程序。Swing,重複使用一個「屏幕」進行多次運行

實驗包括一個白色的屏幕,其中出現一個小表情,「站在那裏」3秒,然後消失。然後屏幕再次全白,並且該人必須點擊他認爲該表情的空間。之後,另一個表情出現在不同的空間,整個過程重複多次。將有一個數據庫用於保存原始座標和該人點擊的座標。

我的問題是如何在一個窗口中發生這種情況?我嘗試過使用多個JForms,它的工作方式太多了,並且每次迭代都會打開不同的窗口。

+1

請閱讀Oracle教程JLabel,Icon,MouseListener ,Swing Timer,一堆代碼示例在這裏, – mKorbel

+0

請看看[玩形狀](http://tips4java.wordpress.com/2013/05/13/playing-with-shapes/),@camickr,它有一些有趣的事情,你可能需要你的項目,像邊界檢查形狀:-) –

回答

2

這是做什麼。您需要創建一個延伸JPanel的類並覆蓋paintComponent以在適當的位置上繪製圖像。構造函數還應該添加一個鼠標偵聽器,該偵聽器可以在適當的區域檢測鼠標點擊,更新數據並致電repaint()。至於在特定時間後隱藏表情,請使用揮杆Timer

現在,我不打算舉一個例子,因爲我們不會爲堆棧溢出做你的功課。

+0

-1因爲3000ms的概念沒有顯示任何地方 –

+0

我剛剛編輯它。 – tbodt

+0

然後執行+1:P –

3

開始

開始有點像JPanel。這是你做所有工作的地方。您可以創建一個JFrame的實例並將其添加到該實例。

當用戶準備就緒時,您將開始一個循環。這將從數據庫加載詳細信息,開始javax.swing.Timer並要求重新繪製組件(以便它可以顯示圖像)。

當計時器觸發時,它應該重置顯示(空白)。

當用戶單擊組件時(鼠標監聽器會檢測到該組件),可以記錄鼠標點並開始新的循環。

+0

+1這將幫助用戶解決問題以及使他學到很多東西 –

0

我的建議:

讓你的窗口JPanel並覆蓋paint方法

public class MyPanel extends JPanel { 
    public void paint(Graphics g) { 
    // do your painting here 
    } 
} 

首先確保你從JPanel的消滅一切(從paint方法) 接下來在paint方法秀註釋表情符號圖像(搜索java swing圖像...) 但是隻有當表情數據在那裏時(coordiantes)。

下作出這樣的西港島線切換表情座標的函數

toggleEmoticon(){ 
if(emoticon.x != -1 && emoticon.y != -1){ 
    emoticon.x=-1; 
    emoticon.y=-1; 
} 
else{ 
    emoticon.x = random() //between 0 and panel width 
    emoticon.y = random() //between 0 and panel height 
} 

使調用x秒後,該功能的計時器...

然後你必須檢查鼠標點擊座標接近或withing所示笑臉...的界限

(請注意,所示的笑臉會從選擇座標+寬度和高度所示)

我想你可以解決其餘的問題。 查找我告訴你的東西的示例,並嘗試單獨做這件事,從不期望一個可行的例子,否則你將不知道如何做任何事情......

+0

油漆不是執行自定義繪畫的推薦方法。看看[在AWT和Swing中繪畫](http://www.oracle.com/technetwork/java/painting-140037.html) – MadProgrammer

+0

可能是這樣,但是因爲這聽起來像是作業問題,基本的,非複雜的解決方案似乎足夠好。但我同意,你的帖子是好多了:) – DaMachk

+0

這將是更多的理由來證明正確的過程:P – MadProgrammer