Re: [急問] Repaint無作用..

看板java作者 (!H45)時間16年前 (2007/11/10 21:36), 編輯推噓6(604)
留言10則, 3人參與, 最新討論串2/2 (看更多)
要不要改用 Canvas? 畫布: public class MyCanvas extends Canvas { private Image image; public void paint(final Graphics g) { if (this.image != null) { g.drawImage(this.image, 0, 0, this); } } public void setImage(final Image image) { this.image = image; } } 事件控制器: private MyCanvas imageCanvas; protected void readImage() { final JFileChooser fileChooser = new JFileChooser(); final int state = fileChooser.showOpenDialog(null); if (JFileChooser.APPROVE_OPTION == state) { final File selectedFile = fileChooser.getSelectedFile(); try { final BufferedImage image = ImageIO.read(selectedFile); this.imageCanvas.setImage(image); this.imageCanvas.repaint(); } catch (final IOException e) { e.printStackTrace(); } } } 圖形介面 (JApplet): private MyCanvas imageCanvas; public void init() { this.getContentPane().setLayout(new BorderLayout()); this.getContentPane().add(this.imageCanvas, BorderLayout.CENTER); } ※ 引述《mabi (魔人)》之銘言: : 我想寫一個button 按下去後圖片會移動 : public class MyPanel extends JPanel 裡 : public void paintComponent(Graphics g) : { : g.drawImage(back, 0, 0, this); : g.drawImage(abc,x,325,this); : } : public void paint(Graphics g) : { : g.drawImage(back, 0, 0, this); : g.drawImage(abc,x,325,this); : } : back和abc都是Image : Button 的 Handler : class buttonAction implements ActionListener : { : public void actionPerformed(ActionEvent event) : { : Object object = event.getSource(); : if (object == button) : button1_ActionPerformed(event); : } : } : void button1_ActionPerformed(java.awt.event.ActionEvent event) : { : button.setText("賽跑中"); : button.setEnabled(false); : move(); : } : public void move() : { : for (int i=0;i<50;i++) : { : image.setLocation(x+i, y); : image.repaint(); : try : { : Thread.sleep(50); : } : catch(Exception ex) {} : } : } : image為Mypanel : 作出的結果為Button按下去後,圖片一直沒更新,直到結束最後一個畫面才更新... : 若小弟表達的不好這裡有完整程式http://momo26.myweb.hinet.net/RSAJava.rar : 謝謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.247.13

11/10 22:57, , 1F
謝謝H45大但我使用Canvas後 還是沒解決也...
11/10 22:57, 1F

11/10 23:00, , 2F
button動作裡的for還是不能repaint... 還是我會錯意了 謝謝!
11/10 23:00, 2F

11/10 23:32, , 3F
請用Thread把repaint的邏輯運算分開
11/10 23:32, 3F

11/10 23:33, , 4F
我習慣實作Runable
11/10 23:33, 4F

11/11 00:41, , 5F
問題已解決了 感謝H45大和slalala 謝謝!
11/11 00:41, 5F

11/11 02:06, , 6F
結果勒?我也是新手 想知道原因(敲碗)
11/11 02:06, 6F

11/11 11:34, , 7F
感覺我好像沒有提到重點 XD
11/11 11:34, 7F

11/11 15:13, , 8F
slalala大我只是照您說的 參考http://0rz.tw/5d3gm範例做出的
11/11 15:13, 8F

11/11 15:48, , 9F
果然是這樣 感覺視覺外觀 邏輯兩樣要分開~_~
11/11 15:48, 9F

11/11 15:48, , 10F
之前我做processBar也遇到這樣的問題/ \
11/11 15:48, 10F
文章代碼(AID): #17DRFJ-p (java)
討論串 (同標題文章)
文章代碼(AID): #17DRFJ-p (java)