我必須開發一個應該執行心理實驗的Java swing應用程序。Swing,重複使用一個「屏幕」進行多次運行
實驗包括一個白色的屏幕,其中出現一個小表情,「站在那裏」3秒,然後消失。然後屏幕再次全白,並且該人必須點擊他認爲該表情的空間。之後,另一個表情出現在不同的空間,整個過程重複多次。將有一個數據庫用於保存原始座標和該人點擊的座標。
我的問題是如何在一個窗口中發生這種情況?我嘗試過使用多個JForms,它的工作方式太多了,並且每次迭代都會打開不同的窗口。
我必須開發一個應該執行心理實驗的Java swing應用程序。Swing,重複使用一個「屏幕」進行多次運行
實驗包括一個白色的屏幕,其中出現一個小表情,「站在那裏」3秒,然後消失。然後屏幕再次全白,並且該人必須點擊他認爲該表情的空間。之後,另一個表情出現在不同的空間,整個過程重複多次。將有一個數據庫用於保存原始座標和該人點擊的座標。
我的問題是如何在一個窗口中發生這種情況?我嘗試過使用多個JForms,它的工作方式太多了,並且每次迭代都會打開不同的窗口。
開始
開始有點像JPanel
。這是你做所有工作的地方。您可以創建一個JFrame
的實例並將其添加到該實例。
當用戶準備就緒時,您將開始一個循環。這將從數據庫加載詳細信息,開始javax.swing.Timer
並要求重新繪製組件(以便它可以顯示圖像)。
當計時器觸發時,它應該重置顯示(空白)。
當用戶單擊組件時(鼠標監聽器會檢測到該組件),可以記錄鼠標點並開始新的循環。
+1這將幫助用戶解決問題以及使他學到很多東西 –
我的建議:
讓你的窗口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所示笑臉...的界限
(請注意,所示的笑臉會從選擇座標+寬度和高度所示)我想你可以解決其餘的問題。 查找我告訴你的東西的示例,並嘗試單獨做這件事,從不期望一個可行的例子,否則你將不知道如何做任何事情......
油漆不是執行自定義繪畫的推薦方法。看看[在AWT和Swing中繪畫](http://www.oracle.com/technetwork/java/painting-140037.html) – MadProgrammer
可能是這樣,但是因爲這聽起來像是作業問題,基本的,非複雜的解決方案似乎足夠好。但我同意,你的帖子是好多了:) – DaMachk
這將是更多的理由來證明正確的過程:P – MadProgrammer
請閱讀Oracle教程JLabel,Icon,MouseListener ,Swing Timer,一堆代碼示例在這裏, – mKorbel
請看看[玩形狀](http://tips4java.wordpress.com/2013/05/13/playing-with-shapes/),@camickr,它有一些有趣的事情,你可能需要你的項目,像邊界檢查形狀:-) –