2012-12-24 2 views
0

Я попробовал следующий код для отображения изображения на апплете, но когда я попытался изменить размер окна апплета, загруженное изображение не изменилось, почему это произошло?Как динамически изменять размер компонентов апплета при изменении окна?

import java.applet.*; 
import java.awt.*; 

public class ImageViewer extends Applet 
{ 
Image image; 
int imageX, imageY; 
MediaTracker mt; 

public void init() 
{ 
showStatus("Getting image..."); 
mt = new MediaTracker(this); 
image = getImage(getDocumentBase(), "fruits.jpg"); 
mt.addImage(image, 0); 
} 

public void start() 
{ 
showStatus("Loading image..."); 
try 
    { 
    mt.waitForAll(); 
    } 
catch(Exception e) 
    { 
    e.printStackTrace(); 
    } 
while(!mt.checkAll(true)){} 
imageX = image.getWidth(this); 
imageY = image.getHeight(this); 
showStatus("Resizing Applet image size: " + imageX + "x" + imageY); 
resize(imageX, imageY); 
} 

public void paint(Graphics g) 
{ 
showStatus("Drawing image..."); 
g.drawImage(image, 0, 0, this); 
} 

} 
+0

Это потому, что вы фактически не изменяете размер изображения – MadProgrammer

+0

* «Как динамически изменять размер компонентов апплета при изменении окна?» * Обычно размер окна апплета не изменился. Апплет никогда не должен пытаться изменять размер кода Java. BTW - используйте последовательный и логический отступ для кодовых блоков. Отступ кода предназначен для того, чтобы помочь людям понять поток программы. –

ответ

3

Изображение не изменяет размер, как вы используете метод Graphics.drawImage, который использует изображения собственного размера вместо размера Applet контейнера

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

Вы могли бы заменить это

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

Также не забудьте позвонить по номеру

super.paint(g); 

обратить любые дочерние компоненты, включая фон контейнера.


КСТАТИ: java.awt.Applet является чем-то реликвия теперь, был заменен JApplet. Это часть Java Swing, которая использует легкие ресурсы и имеет множество других функций.

+0

(Не забудьте вызвать super.paint;)) – MadProgrammer

Смежные вопросы