JInternalFrame的内容包装得太紧了

时间:2014-03-06 04:41:56

标签: java swing

当我在pack()上拨打JInternalFrame时,它未正确打包,大部分时间过于紧张。

编辑:

这是一个显示上述行为的最小示例。 它似乎也取决于使用的外观和感觉(这里:Nimbus)。

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();
  }
}

JInternalFrame pack test

1 个答案:

答案 0 :(得分:1)

在将pack()添加到相应的JInternalFrame之后,您必须致电JDesktopPane