※ ChatGPTを利用し、要約された質問です(原文:ウインドウを大きくしてもボールの動きが変わらない)
ウインドウを大きくしてもボールの動きが変わらない
このQ&Aのポイント
ComponentListenerを使用してウインドウをリサイズしても、ボールの動きには反映されない
componentResizedではリサイズされたウインドウの大きさを取得できるが、ボールの動きには反映されていない
ウインドウの大きさが変わっても、ボールの移動範囲は変わらない
今晩は、java初心者です。
宜しくお願い致します。
"ComponentListener"でウインドウを"componentResized"してもボールの動く範囲
は変わりません、何故でしょうか。
"componentResized"では確かに"Resized"されたウインドウの大きさをとっていますが、
何故かボールの動きには反映されません。
宜しくお願いします。
========================================================================================
public class Ball2 extends Applet implements Runnable , ComponentListener
{
public static final long serialVersionUID = 1L ;
int width , height ;
Thread thread ;
boolean LoopFlag = false ;
int x = 30 , y = 100 ;
Image offScreen ;
Graphics screen ;
int vx = 2 , vy = 2 ;
public void init()
{
width = getSize().width ;
height = getSize().height ;
thread = new Thread( this );
thread.start();
offScreen = createImage( width, height ) ;
screen = offScreen.getGraphics() ;
addComponentListener(this) ;
}
public void componentResized( ComponentEvent e )
{
width = getSize().width ;
height = getSize().height ;
}
public void run()
{
while( LoopFlag == false )
{
move() ;
repaint() ;
try { Thread.sleep( 10 ) ; }
catch ( InterruptedException e ) {}
}
}
private void move()
{
if( x >= width - 50 ) { vx =- vx ; }
if( y >= height - 50 ) { vy =- vy ; }
if( x < 0 ) { vx =- vx ; }
if( y < 0 ) { vy =-vy ; }
x += vx;
y += vy;
}
public void update( Graphics g) { paint(g) ; }
public void paint( Graphics g)
{
screen.clearRect( 0 , 0 , width , height ) ;
screen.setColor( Color.blue ) ;
screen.fillOval( x , y , 50 , 50 ) ;
g.drawImage( offScreen , 0 , 0 , this ) ;
}
public void destroy()
{ LoopFlag = true ; }
public void componentHidden( ComponentEvent e ){}
public void componentMoved( ComponentEvent e ){}
public void componentShown( ComponentEvent e ){}
}
お礼
chiiba_kunさん、回答有難うございます。 初心者なので確かによくその辺のところが理解出来ていません。 具体的にはどのように書いてやればいいのでしょうか。 宜しくお願いします。