作者alan0541 (A.sky)
看板java
标题[问题] SWT 中 button 按下去後 canvas 没法画image
时间Tue Oct 5 16:50:25 2010
第一次发文,排版可能有点乱,请多多包涵。
我想试着用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