JInternalFrame - неверная позиция компонента - PullRequest
0 голосов
/ 10 ноября 2018

Java 1.7

public class AccountsScroller extends JInternalFrame implements ActionListener, PaginationListener {

...
}

Вот как я открываю InternalFrame из JFrame

    public void openInternalFrame(JInternalFrame newInternalFrame, Boolean isMaximize, Dimension dimension) {
            try {
                currentInternalFrame.setClosed(true);
                currentInternalFrame = newInternalFrame;
                addInternalFrame(currentInternalFrame, isMaximize, dimension);
            } catch (PropertyVetoException ex) {
                logger.error(ex.getMessage(), ex);
            }
        }



 private JDesktopPane desktop;

desktop = new JDesktopPane();
private void addInternalFrame(JInternalFrame internalFrame, Boolean isMaximize, Dimension dimension) {
        desktop.add(internalFrame); // 321 line
        try {
            internalFrame.setSelected(true);
            if (isMaximize != null && isMaximize) {
                internalFrame.setMaximum(true);
            } else {
                internalFrame.setSize(dimension);
            }
        } catch (java.beans.PropertyVetoException e) {
            logger.error(e.getMessage(), e);
        }
    }

Но когда я снова открываю его, я получаю ошибку:

   [java]     get_all_accounts rows = 2
     [java] Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: illegal component position
     [java]     at java.awt.Container.addImpl(Container.java:1100)
     [java]     at javax.swing.JLayeredPane.addImpl(JLayeredPane.java:231)
     [java]     at javax.swing.JDesktopPane.addImpl(JDesktopPane.java:484)
     [java]     at java.awt.Container.add(Container.java:417)
     [java]     at myproject.com.MainScreenView.addInternalFrame(MainScreenView.java:321)
     [java]     at myproject.com.MainScreenView.openInternalFrame(MainScreenView.java:314)
     [java]     at myproject.com.MainScreenView.openInternalFrame(MainScreenView.java:307)
     [java]     at myproject.com.MainScreenView.actionPerformed(MainScreenView.java:230)
     [java]     at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
     [java]     at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
     [java]     at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
     [java]     at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
     [java]     at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
     [java]     at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833)
     [java]     at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877)
     [java]     at java.awt.Component.processMouseEvent(Component.java:6533)
     [java]     at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
     [java]     at java.awt.Component.processEvent(Component.java:6298)
     [java]     at java.awt.Container.processEvent(Container.java:2236)
     [java]     at java.awt.Component.dispatchEventImpl(Component.java:4889)
     [java]     at java.awt.Container.dispatchEventImpl(Container.java:2294)
     [java]     at java.awt.Component.dispatchEvent(Component.java:4711)
     [java]     at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
     [java]     at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
     [java]     at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
     [java]     at java.awt.Container.dispatchEventImpl(Container.java:2280)
     [java]     at java.awt.Window.dispatchEventImpl(Window.java:2746)`enter code here`
...