[問題] SWT 中 button 按下去後 canvas 沒法畫image

看板java作者 (A.sky)時間15年前 (2010/10/05 16:50), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
第一次發文,排版可能有點亂,請多多包涵。 我想試著用java swt做一個下棋的小遊戲, Display display = Display.getDefault(); ... sShell = new Shell(); ... //開版面之類的就省略不用說了... 我new了一個畫布(canvas) Image boa=new Image(Display.getDefault(),getClass().getResourceAsStream("pic/cheese_board.png")); //pic/cheese_board.png是棋盤的圖片而已 boa_bg = new Canvas(sShell, SWT.NONE); boa_bg.setBackgroundImage(boa); boa_bg.setBounds(new Rectangle(80, 50, 640, 320)); .... 然後寫了一個把棋子放上去的function public void creat32coveredChess(){ boa_bg.addListener(SWT.Paint, new Listener(){ public void handleEvent(org.eclipse.swt.widgets.Event event){ Image che_covered=new Image(Display.getDefault(),getClass().getResourceAsStream("pic/cheese.png")); //pic/cheese.png是一張80*80的圖 event.gc.drawImage(che_covered, 0, 0); }); } 當我呼叫這個function的時候,就會把一個棋子放到畫布0,0的位置上面 private void creatStartButton(){ StartButton = new Button(sShell, SWT.NONE); StartButton.setBounds(new Rectangle(300, 400, 200, 100)); StartButton.setText("開始遊戲!"); StartButton.addMouseListener(new org.eclipse.swt.events.MouseAdapter() { public void mouseDown(org.eclipse.swt.events.MouseEvent e) { creat32coveredChess(); } }); } 最後在版面上面放一個button,並用mouseDown當我按下按鈕的時候,他會把棋子放上去 可是按了都沒有反應,但是如果直接執行creat32coveredChess()的話就可以把那一個棋子放到畫布上面去, 不知道問題是出在哪邊?希望大家可以幫幫我。 題外話:回答時稍微獎的淺顯易懂一點,寫java程式的經驗還不夠多, 另外如需較完整的程式碼也請提出來,謝謝! -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.135.65.106
文章代碼(AID): #1CgkRM0k (java)