2017-11-13 9 views
0

Java Swingでゲームを開発しています。私はその場所のすべての要素を設定するために、絶対座標と固定のウィンドウサイズを使用します。しかし、私がJFrameのサイズを変更すると、描かれた要素はスケールされません。それをどうすれば実現できますか? 私の例では、デフォルトのウィンドウサイズを1280 x 720に設定し、このサイズに従ってゲームを開発します。それでは、Javaに自動的に要素のサイズを変更させるだけで完璧です。Java Swing JFrameとJPanelの描画されたすべての要素のサイズ変更

+1

「私は絶対座標を使用します」 - しないでください。 [レイアウト・マネージャー](https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html) – c0der

+1

*「すべての要素をその場所に設定するには、絶対座標と固定ウィンドウ・サイズを使用します。しかし、JFrameのサイズを変更した場合、描かれた要素はスケールされません。* - そうです、それはレイアウトマネージャがあなたのために行うものですが、ホイールを再構築したい場合、手動で行う必要がありますコンポーネントの関係や、コンテナのサイズの変更、スペースの割り当て方法、使用可能なスペースがコンポーネントに収まるようにするためにどう対処するかについて、アイデアを考えてください。 – MadProgrammer

+1

これらの問題のほとんどを解決するために設計されたAPIを使用することができます。ピクセルの完璧なレイアウトは錯覚です。異なるフォントメトリック。 DPI;画面解像度。ビデオドライバ;それらを乗り切る時間。代わりにユーザーのフローとインタラクションに焦点を当ててください – MadProgrammer

答えて

-1

固定サイズのウィンドウが必要な場合は、JFrame.setResizable(boolean)APIを使用してウィンドウのサイズを変更できないようにすることができます。例:

public class FixedSizeJFrame 
{ 
    public static void main(String[] args) 
    { 
    JFrame frame = new JFrame("My Title"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setBounds(100, 100, 1280, 720); 
    frame.getContentPane().add(new JLabel("My Label"), BorderLayout.NORTH); 
    frame.getContentPane().add(new JTextArea("Sample text"), BorderLayout.CENTER); 
    frame.setResizable(false); 
    frame.setVisible(true); 
    } 
} 
+1

ユーザーは、サイズ変更ができないウィンドウがどれだけ嫌いであるかを指摘したいだけです。コードでは、フォントメトリックの相違点も考慮に入れません。 DPI;コードを実行する必要があるかもしれない画面の解像度は、ユーザーの受け入れとユーザビリティの可能性をさらに減らす – MadProgrammer

+0

をTrueにします。しかし、setResizable()がどのように使われているかを実証したかっただけです。 –

関連する問題