JPanelに配置する画像を合わせようとしています。JPanelの幅と高さを見つけ、JPanelと同じ幅と高さになるように画像を拡大縮小します。私の問題は、画像がJPanelの少し外側にあることです。
簡単な短い例は
public class TestJPanel {
/**
* @param args
*/
public static void main(final String[] args) {
final JFrame jf = new JFrame();
final JButton jb = new JButton("100by100");
jb.setPreferredSize(new Dimension(100,100));
final JPanel jp = new JPanel();
jp.setPreferredSize(new Dimension(100, 100));
System.out.println(jp.getInsets());
jp.add(jb);
jf.getContentPane().add(jp);
jf.pack();
jf.setVisible(true);
}
}
この場合、ボタンはJPanelの少し外側にあります。JPanel.getWidth()
JPanelに入れるコンポーネントの最大サイズを見つけるための同等の高さの方法とは別に別の方法はありますか?
編集
これはレイアウトマネージャーの問題だと思います。私のアプリケーションでは、GridBagLayoutを使用しています。
上記の例を次のように変更すると、ボタンが途切れるのを防ぐことができます。
public class TestJPanel {
/**
* @param args
*/
public static void main(final String[] args) {
final JFrame jf = new JFrame();
final JButton jb = new JButton("100by100");
jb.setPreferredSize(new Dimension(100,100));
final JPanel jp = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 0));
jp.setPreferredSize(new Dimension(100, 100));
System.out.println(jp.getInsets());
jp.add(jb);
jf.getContentPane().add(jp);
jf.pack();
jf.setVisible(true);
}
}