• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:画面の大きさに合わせてボールを動かせたい)

画面の大きさに合わせてボールを動かせたい

このQ&Aのポイント
  • java初心者が画面の大きさに合わせてボールを動かす方法を教えてください
  • 現在、ボールの動く範囲は画面の大きさに関係なく固定されています
  • どのようにプログラムを変更すれば画面の大きさに合わせてボールの動く範囲を調整できるのでしょうか

質問者が選んだベストアンサー

  • ベストアンサー
  • salsberry
  • ベストアンサー率69% (495/711)
回答No.2

質問文のプログラムとANo.1の補足のプログラムが全く関係ありませんが、Appletを作りたかったんじゃなかったんでしょうか。 元のBallMove_1pクラスで、Runnableに加えてComponentListenerも実装してください。 その上でinit()の中でaddComponentListener(this);を実行すればいいでしょう。 再度書きますが、画面の大きさが変わったときにwidthやheightの値とオフスクリーンの大きさを更新するようにすればいいです。

dikon_007
質問者

お礼

salsberry さん、ありがとう御座いました。

その他の回答 (1)

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.1

動く範囲を決めているのは、move()メソッドの中で参照されているwidthやheightの値です。しかし、widthやheightの値はinit()の中で一度セットされた後更新されることがありません。これが、アプレット起動後に画面の大きさを変えてもボールの動く範囲に反映されない理由です。 画面の大きさが変わったときにwidthやheightの値を更新するようにすればいいです。ComponentListenerのcomponentResized()あたりを使えばいいと思いますが、初心者にはハードルが少し高いかな。 width・heightの値だけではなく、オフスクリーンの大きさも同時に変えてください。

dikon_007
質問者

補足

 回答有難う御座います。  何とかWebの情報を参考にして以下のようなコードは書けたのですが、 「System.out.println("componentResized");」は表示されたのですが、 Windowには「g.drawOval( 20 , 20 , 50 , 50) ;」というのが書けません。  どこがどう間違っているのでしょうか、宜しくお願いします。 =================================================================== import java.awt.Color; import java.awt.Container; import java.awt.event.ComponentEvent; import java.awt.event.ComponentListener; import javax.swing.JFrame; public class Resized4 extends JFrame implements ComponentListener { public static void main(String[] args) { Resized4 frame = new Resized4(); frame.addComponentListener(new Resized4()); Container cnp = frame.getContentPane(); cnp.setBackground(Color.magenta) ; frame.setTitle("サンプル") ; frame.setSize(640, 480) ; frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ; frame.setVisible(true); } public void componentHidden(ComponentEvent e) { System.out.println("componentHiddened"); } public void componentMoved(ComponentEvent e) { System.out.println("componentMoved"); } public void componentResized(ComponentEvent e) { // g = getGraphics(); // g.drawOval( 20 , 20 , 50 , 50) ; System.out.println("componentResized"); } public void componentShown(ComponentEvent e) {} }