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。我有一系列 JComponent,其中一个是ImageScrollPane的扩展,它没有空边框。

我发现诀窍是,类似于这个问题,将我的组件的边框设置为空边框。

于 2012-12-05T11:58:22.733 回答