2016-10-29 2 views
0

さて、私は、背景画像といくつかのボタンを持つチックタックつま先のゲームを作ろうとしています。 JFrameのを拡張した後:それは画面サイズを取得し、JFrameのサイズを設定するためにそれを使用するためのJFrameについてはJButtonを動的に描画する

Dimension screen; 
GUI() 
{ 
    setUndecorated(true); 

    screen=Toolkit.getDefaultToolkit().getScreenSize(); 
    setSize(screen.width, screen.height); 
    setLocation(0, 0); 
    System.out.println(screen.width+" : "+ screen.height); 
    try { 
     setContentPane(new JLabel(new ImageIcon(ImageIO.read(new File("path"))))); 
    } catch (IOException e1) {   
    } 

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setLayout(null); 
    setVisible(true); 
} 

、それは今、私がそれを実行するすべてのPC上で正常に動作する必要があります。しかし:

JButton buttons=new JButton[9]; 
    int x=110, y=260; 
    for(int i=0;i<buttons.length;i++) 
    { 
     buttons[i]=new JButton(""); 
     buttons[i].setSize(350,150); 
     buttons[i].setLocation(x,y); 
     y+=(i%3==2)?160:0; 
     x=(i%3==2)?110:x+400;       
     add(buttons[i]);    
    } 

は、これらのボタンは正常に動作、または私はMY画面サイズに応じて位置とサイズを設定するので、唯一の私のPCには、画像内の細かい描画されます。だから私はどのようにすべてのPCでも動作するようにこれらのボタンを描画する方法についていくつかの助けが必要です。 getScreenSizeでできるアルゴリズムがいくつかありますか?私は何も考えることができません。

私はレイアウトマネージャを使うこともできると読んだことがありますが、ボタンをイメージ内に描画したいので、ボタンの描画方法はわかりません。ここにはIMAGEがあるので、私が本当にやりたいことを想像することができます。 ありがとうございます。

答えて

0

レイアウトコンテナを使用したくない場合は、ここにいくつかのオプションがあります。

1)は、あなたのJFrameが非サイズ変更可能作成し、設定された固定幅と高さは
setResizable(false); setSize(width, height);

2)あなたがサイズ変更可能なJFrameの作成し、異なる解像度と画面サイズのためにあなたの背景画像を作成

そのresizeイベントオーバーライドします。 JFrameのサイズが変更されると、それに応じて背景イメージが更新されます。 例:

frame.addComponentListener(new ComponentListener() { 

public void componentResized(ComponentEvent e) { 
    if(getWidth() <=800 && getHeight() <=600) { 
     setContentPane(new JLabel(new ImageIcon(ImageIO.read(new File("image1"))))); 
    } else if (getWidth() <=1024 && getHeight() <=768) { 
     setContentPane(new JLabel(new ImageIcon(ImageIO.read(new File("image2"))))); 
    } else if (//more Resolutions...) { 
     //ect... 
    } 
} 
}); 
関連する問題