我正在尝试将图像放入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);
}
}
答案 0 :(得分:0)
正如我在问题中所说,问题出在布局管理器上。在我的应用程序中,这不是问题,因为我使用的是GridBagLayout。我有一系列JComponents,其中一个是ImageScrollPane的扩展,没有空边框。
我发现诀窍与此question类似,将我的组件上的边框设置为空边框。