Добавить JInternalFrame в JDesktopPane во время выполнения - PullRequest
1 голос
/ 23 сентября 2011

У меня проблема с JDesktopPane, я добавляю JInternalFrame к нему, а затем показываю его на JFrame.

Проблема заключается в том, что я пытаюсь добавить еще один JInternalFrame в исполнениевремя.

Я использую тот же метод для добавления того же JInternalFrame, но отображается его значение.

public class Desktop extends JDesktopPane {
    (...)
    public void addJInternalFrameBox(JInternalFrameBox jifb) {
     this.add(jifb, desktop.CENTER_ALIGNMENT);
     this.repaint();
     this.validate();
    }
}

JInternalFrameBox class:

public class JInternalFrameBox extends JInternalFrame {
    (...)
    public JInternalFrameBox(Integer id) {
        this.id = id;
        setUpFrame();
    }
    public void setUpFrame() {
        JLabel lbl = new JLabel("test");
        lbl.setVisible(true);

        this.add(lbl);
        this.setPreferredSize(INTERNAL_FRAME_SIZE);
        this.setLocation(100, 100);
        this.setIconifiable(true);
        this.setClosable(true);
        this.pack();
        this.setVisible(true);
    }
}    

jButtonBox кнопкакоторые открывают JInternalFrameBox:

public class jButtonBox extends JButton implements MouseListener {
    public void mouseReleased(MouseEvent e) {
        JInternalFrameBox jifb = new JInternalFrameBox(id);
        jifb.setVisible(true);
        Desktop df = Desktop.getInstance();
        df.addJInternalFrameBox(jifb);
    }
    (...)
}

Ответы [ 3 ]

4 голосов
/ 23 сентября 2011

Прочитайте раздел из учебника по Swing на Как использовать внутренние рамки для рабочего примера.

3 голосов
/ 23 сентября 2011

Не используйте JPanel для рабочего стола, а используйте JDesktopPane.Это именно то, для чего это.

1 голос
/ 24 сентября 2011

Вы должны установить и местоположение и размер внутреннего фрейма, как в

    setSize(INTERNAL_FRAME_SIZE); // instead of setPref
    setLocation(100, 100);

хм ... может быть, нет (только что увидел пакет в вашем коде) - больше не нужно гадать без sscce,как уже говорили другие

...