2011-06-22 11 views
1

JButtonのカスタムサブクラスを使用してチェスタイプボードを作成したいと思います。私の問題は、チェスの作品のイメージが少し小さすぎるということです。グリッドレイアウトの各グリッドのサイズに正確に拡大縮小する方法はありますか? Jframeのサイズを変更すると、グリッドも同様にサイズが変更されます。フレーム全体のサイズ変更時に動的に画像のサイズを変更する方法はありますか?java gridlayoutにグリッドに合わせて画像を動的にサイズ変更

答えて

3

あなたはこの

1のための3のオプションを持っているが)

2などのGimp、Photoshopのを、使用して画像自体のサイズを変更します)

Image i = icon.getImage(); 
if(i != null){ 
    int width = (int)(size * fraction); 
    int height =(int)(size*icon.getIconHeight()/icon.getIconWidth()*fraction); 
    miniature = new ImageIcon(i.getScaledInstance(width, height, Image.SCALE_SMOOTH)); 
} 

3動的にアイコンを作成します)の塗料にあなたのフレームは、スケールを使用することができます

private void scaledDrawing(Graphics g, float scale){ 
    Graphics2D g2 = (Graphics2D) g; 
    AffineTransform at = new AffineTransform(); 
    AffineTransform save = g2.getTransform(); 
    at.setToIdentity(); 
    at.scale(goa.getScale().x, goa.getScale().y); 
    g2.transform(at); 
    image.paintIcon(c, g2); 
    g2.setTransform(save); 
} 
+0

あなたのオプションで2.分数は何ですか?それは私が指定する変数ですか?最初にメソッド2を適用できるように、グリッドの初期サイズを決定する方法はありますか?ありがとう – jhlu87

+0

申し訳ありませんが、特定の比率を維持する前に計算するだけの要因です。 getHidth()getWidth()を使って、あなたが望むイメージのサイズを計算することができます;) –

+0

申し訳ありませんが、おそらく私は単にばかげているだけです。私はgridlayout(3,3)を使用していると私は特定のグリッドのサイズを取得する方法がありません。多分私はパネルのサイズを取得し、それを解決するために分割することができると思ったが、私のJPanelでgetHeight()を呼び出すと0が返され、それは意味をなさない。 – jhlu87

2

画像に何らかの変換を適用することはできますが、少し醜いかもしれません。画像が十分に小さい場合は、フレームのサイズが本当に小さい場合にスクロールバーが表示されるように、ボタンの最小サイズを強制できます。もう1つの選択肢は、画像の2つまたは3つの異なるセットをうまくスケーリングされたサイズで有し、異なる基板サイズのためにそれらを交換することであるかもしれない。

関連する問題