Java 适合JPanel的最大组件大小
我正在尝试将一个图像放入JPanel中。我找到JPanel的宽度和高度,并缩放图像,使其具有与JPanel相同的宽度和高度。我的问题是图像稍微超出了JPanel 一个简单的例子是Java 适合JPanel的最大组件大小,java,swing,jpanel,Java,Swing,Jpanel,我正在尝试将一个图像放入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
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);
}
}
正如我在问题中所说,问题出在布局经理身上。在我的应用程序中,这不是问题所在,因为我正在使用。我有一系列JComponents,其中一个是没有空边框的扩展
我发现诀窍是,与此类似,将组件上的边框设置为空边框。按钮在JPanel之外是什么意思?你是怎么知道的?如果你向一个容器中添加了一些东西,它就不应该占用容器边界之外的空间。为什么你需要JPanel与JButton具有相同的大小?在这种情况下,您根本不需要JPanel。考虑使用<代码> SwitualUptudio.VoCuelAtter()/代码>我可以看到JButt的底部被切断。在我的应用程序中,我必须平移才能看到图像的其余部分,但它应该紧贴在JPanel中。这是一个你能否在帧中看到整个JPanel的问题。无论按钮是否安装在JPanel内。如果按钮比JPanel大,按钮的碎片将被永久切断,并且不能通过平移取回。