[問題] SWT 中 button 按下去後 canvas 沒法畫image
第一次發文,排版可能有點亂,請多多包涵。
我想試著用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