1

私はマルチプラットフォーム ゲームを開発しており、全画面の非境界ウィンドウを作成したいと考えていましたが、ここで LINUX オペレーティング システムの問題が発生しました。

WINDOWS システムでは、Toolkit.getDefaultToolkit().getScreenSize()メソッドを使用して完全な SCREEN SIZE を取得しましたが、正常に機能しましたが、LINUX では LINUX BARS のために画面が少し広くて高くなりました。

*以下の私の回答の解決策

4

2 に答える 2

1

Full-Screen Exclusive Mode API をご覧ください。これにより、プログラムは画面全体に完全にアクセスできるようになり、タスク/ドック バーなどを気にする必要がなくなります。

または、次のようなことができます

GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
Rectangle bounds = gd.getDefaultConfiguration().getBounds();
Insets insets = Toolkit.getDefaultToolkit().getScreenInsets(gd.getDefaultConfiguration());

Rectangle safeBounds = new Rectangle(bounds);
safeBounds.x += insets.left;
safeBounds.y += insets.top;
safeBounds.width -= (insets.left + insets.right);
safeBounds.height -= (insets.top + insets.bottom);

基本的にこれが行うことは、画面の境界 (x/y および幅/高さ)、デバイスの画面のインセットを取得し、画面の境界を更新して、タスク バーやその他のシステム リソースなどを考慮に入れることだけです。

Frame#setExtendedStateまた、ウィンドウを配置Frame.MAXIMIZED_BOTHして作業を任せることができるようなものを使用することもできます。

于 2015-09-13T23:17:18.463 に答える
0

*
解決策インターネットを何時間も閲覧した後、ウィンドウが最大化された状態のときにウィンドウのサイズを取得する解決策をすでに見つけており(フレームの正方形を最大化するように)、すべてのオペレーティングシステムバーに注意して、ウィンドウの最大許容サイズを提供します. メソッドは次のとおりです: GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds()

于 2015-09-14T11:29:42.000 に答える