0

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);
}
}
4

1 に答える 1

0

私の質問で言ったように、問題はレイアウトマネージャーにありました。私のアプリケーションでは、GridBagLayoutを使用していたため、これは問題ではありませんでした。私は一連のJComponentsを持っており、そのうちの1つは空の境界線を持たないImageScrollPaneの拡張でした。

この質問と同様に、コンポーネントの境界線を空の境界線に設定するというトリックが見つかりました。

于 2012-12-05T11:58:22.733 に答える