Canvas を含む jFrame があります。Windows XP/Vista でプログラムを実行し、ウィンドウのサイズを変更すると、ウィンドウに比例してキャンバスのサイズが変更されます。
ただし、Ubuntu Linux では、同じ Java アプリケーションをコンパイルしてウィンドウのサイズを変更すると、キャンバスは同じサイズのままです。
Windows と Linux の両方でキャンバスのサイズをウィンドウに合わせて変更するにはどうすればよいですか? 不一致との取引は何ですか?
Main.java
public class Main {
public static void main(String[] args)
{
JFrame frame = new JFrame("BallBounce");
frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new BoxLayout(frame.getContentPane(),BoxLayout.Y_AXIS));
BallCanvas ballCanvas = new BallCanvas();
frame.getContentPane().add(ballCanvas);
frame.getContentPane().add(controlPanel);
frame.pack();
frame.setVisible(true);
}
}
BallCanvas.java
public class BallCavnas extends Canvas {
public BallCanvas()
{
setPreferredSize(new Dimension(640, 400));
setIgnoreRepaint(true);
... various gui controls are wired up here
}
... rest of canvas code
}
編集:誰かが見たい場合に備えて、私のソースコードはここに圧縮されています:
http://www.filedropper.com/ballbounce
Dave Ray による提案を実行しましたが、それでもキャンバスのサイズが変更されませんか? このJavaプログラムをコンパイルしてWindowsで実行すると、うまくサイズが変更されることを覚えておいてください。Linuxでのみこれを行います。問題があれば、Java 6 Sun 1.6.0.10 JVM も実行しています。
代替テキスト http://img158.imageshack.us/img158/7642/screenshotww0.png
おそらく、BufferStrategy/Graphicsによってキャンバスのサイズが変更されていますが、サイズが変更されていませんか?
編集 2: スクリーンショットから、間違いなく CENTER に設定されています。
frame.getContentPane().add(ballCanvas, BorderLayout.CENTER);
frame.getContentPane().add(controlPanel, BorderLayout.SOUTH);
解決済み
どうやら「キャンバス」のサイズが変更されていたようですが、IT のサイズ変更を許可していないバッファ戦略で奇妙なことをしていました。それを私が直した。みんな、ありがとう!