2013-10-12 139 views
2

我有一個imagepanel類,它在JPanel上繪製圖像。我的問題是,圖像看起來很小,在jpanel內,我不知道爲什麼。drawImage()方法繪製的圖像很小,無論圖像大小

我已經盡我所能,並搜索了網絡,甚至一些java書籍的這個小問題,但沒有成功。我真的需要這個幫助。

我對Java非常陌生。

class Weapons extends JPanel { 
    private Image weaponimage = weapon1.getImage(); 

    @Override 
    protected void paintComponent(Graphics g) { 
    super.paintComponent(g); 

    if (image != null) 
     g.drawImage(weaponimage, 0, 0, getWidth(), getHeight(), this); 
    } 
    } 

這就是圖像類。

+2

如果你需要幫助,你必須發佈一些代碼。 – Mercurial

+1

是圖像BufferedImage? – UDPLover

+1

爲了儘快提供更好的幫助,請發佈[SSCCE](http://sscce.org/)。 @mKorbel Nice標籤編輯。 :) –

回答

5

'即時修復'是以自然尺寸繪製該元素。例如。更改此:

g.drawImage(weaponimage, 0, 0, getWidth(), getHeight(), this); 

要這樣:

g.drawImage(weaponimage, 0, 0, this); 

這似乎順理成章。 「武器」可能應該以自然尺寸繪製。


..problem是圖像看起來非常小的JPanel裏面,

號的問題似乎是,面板本身是非常小的。圖像按佈局指定的寬度和高度繪製。

要增加(BG)圖像的大小,請將組件添加到面板(正確佈置)並將面板顯示爲其首選大小。

+0

非常感謝先生。 – rej

1

可能是你的類是這樣的:

import java.awt.Graphics; 
import java.awt.image.BufferedImage; 
import javax.swing.JPanel; 

    class Weapons extends JPanel { 
     // get image according to your application logic 
     BufferedImage image; 

     @Override 
     public void paint(Graphics g){ 
      super.paintComponent(g); 
      g.drawImage(image, 0, 0, getWidth() - 1, getHeight() - 1, 0, 0, image.getWidth() - 1, image.getHeight() - 1, null); 
     } 

     public void setImage(BufferedImage image){ 
      this.image = image; 
     } 
    } 

    class Main { 
     Weapons weapons; 

     public void updateWeapons(){ 
      // create image 
      BufferedImage image = new BufferedImage(100, 100, BufferedImage.TYPE_3BYTE_BGR); 
      // draw on image 

      // TO UPDATE WEAPONS GUI, below steps are impotant 
      weapons.setImage(image); 
      weapons.repaint(); 
     } 
    } 

您必須覆蓋paint()方法。然後你可以設置圖像並調用repaint()來更新面板上的圖形。

+2

不,你應該總是避免壓倒一切的可能性,然後調用super.paintComponent將摧毀整個油漆鏈,可能會導致更多的問題... – MadProgrammer

+0

先生,關於這個答案,在哪裏我是否輸入圖片文件名的字符串? – rej

+0

您應該使用ImageIO.read(...)從文件加載圖像。 – UDPLover

0

使用維對象改變形象

Weapons picture = new Weapons(); 
    picture.setPreferredSize(new Dimension(110, 160)); 
    panel.add(picture); 

的規模做到這一點,您可以根據需要伸展你的照片的長度和廣度。