我正在尝试将图像放置在 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);
}
}