Java JInternalFrame的内容物包装过紧
当我在Java JInternalFrame的内容物包装过紧,java,swing,Java,Swing,当我在JInternalFrame上调用pack()时,它没有正确打包,大部分都太紧了 编辑: 下面是一个显示上述行为的最小示例。 它似乎还取决于所使用的外观(这里是Nimbus) 在将JInternalFrame添加到相应的JDesktopPane后,您必须调用pack(),pack使用内容的首选大小来决定它需要多大…不知道为什么,因为我在任何手册中都找不到它,但在添加到DesktopPane之前和之后,我都直接使用调用pack()对其进行了测试,只有第二个给出了正确的结果,我不知道它是否只继
JInternalFrame
上调用pack()
时,它没有正确打包,大部分都太紧了
编辑:
下面是一个显示上述行为的最小示例。
它似乎还取决于所使用的外观(这里是Nimbus)
在将
JInternalFrame
添加到相应的JDesktopPane
后,您必须调用pack()
,pack
使用内容的首选大小来决定它需要多大…不知道为什么,因为我在任何手册中都找不到它,但在添加到DesktopPane之前和之后,我都直接使用调用pack()对其进行了测试,只有第二个给出了正确的结果,我不知道它是否只继承了装饰信息或者类似的东西。我只是通过网络进行验证,发现我并不是唯一一个经历过这种情况的人:我与Nimbus有着几乎相同的问题(金属没有出现这种问题):已将JScrollPane
设置为JInternalFrame
的内容窗格。然后,使用Nimbus时,它总是同时显示垂直和水平滚动条。pack
使用内容的首选大小来决定它需要多大,这表明您的内容存在一些问题,可能会提供您正在获得的内容和您期望的内容的图片
import javax.swing.*;
public class JInternalFrameTester {
public static void main(String[] args) {
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
}
catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
System.err.println("Failed setting NimbusLookAndFeel");
}
JFrame frame = new JFrame();
JDesktopPane desktop = new JDesktopPane();
desktop.setOpaque(true);
frame.setContentPane(desktop);
frame.setSize(250, 250);
frame.setVisible(true);
JInternalFrame iframe = new JInternalFrame("Internal Frame");
JTextField textfield = new JTextField("Any text here");
iframe.add(textfield);
iframe.setVisible(true);
/* XXX If placed here, it crashes the layouts */
iframe.pack();
desktop.add(iframe);
/* XXX If placed here, the layout is right */
//iframe.pack();
}
}