Как создать внутренний фрейм в платформе NetBeans? - PullRequest
0 голосов
/ 14 марта 2010

Я создал класс NewProject extends JInternalFrame. Затем я создаю New ... Action с именем «NEW», локализованный в меню «Файл». Я поместил код NewProject p = new NewProject(); p.setVisible(true); в метод действия ActionPerformed.

Но когда я запускаю модуль и нажимаю «NEW» в файловом меню, ничего не появляется. Где может быть проблема?

EDIT: Я частично решил это кодом:

public void actionPerformed(ActionEvent e) {

    JInternalFrame f = new JInternalFrame();
    f.setSize(500, 500);
    f.setVisible(true);
    JDesktopPane p = new JDesktopPane();
    p.add(f);

   //WindowManager.getDefault().getMainWindow().setTitle("fFF");
   WindowManager.getDefault().getMainWindow().add(p)

}

но графический интерфейс не работает. Когда я создаю новую внутреннюю рамку, черный фон появляется, когда я двигаюсь по этой рамке. Есть идеи как это решить?

Ответы [ 2 ]

2 голосов
/ 14 марта 2010

Обычное значение Container для JInternalFrame равно JDesktopPane .В статье Как использовать внутренние рамки изложены основные сведения, и вам может понравиться этот короткий пример использования Action и JMenu в этом контексте.

Несмотря на то, что графический редактор NetBean привлекателен, вы, возможно, захотите сначала освоиться с использованием компонентов Swing.

Добавление: вы не можете добавить один Контейнер верхнего уровня подобно JFrame другому, например JDesktopPane , но вы можете добавить любое количество JInternalFrame экземпляров к JDesktopPane .Попробуйте демоверсию , чтобы увидеть, как она работает.

Приложение: Ах, вы имеете в виду Платформа NetBeans .Извините, я этим не пользовался.

1 голос
/ 24 июля 2017

Я думаю, что вы ищете ответ здесь: https://blogs.oracle.com/geertjan/jdesktoppane,-jinternalframe,-and-topcomponent

Там Geertjan Wielenga показывает пример использования TopComponent с JDesktopPane внутри, где вы можете прикрепить немного JInternalFrame.

...
...
...
private JDesktopPane jdpDesktop;
private int openFrameCount = 0;
public DemoTopComponent() {
    initComponents();
    setName(NbBundle.getMessage(DemoTopComponent.class, "CTL_DemoTopComponent"));
    setToolTipText(NbBundle.getMessage(DemoTopComponent.class, "HINT_DemoTopComponent"));
    setLayout(new BorderLayout());
    jdpDesktop = new JDesktopPane();
    createFrame(); // Create first window
    createFrame(); // Create second window
    createFrame(); // Create third window
    //Add the JDesktop to the TopComponent
    add(jdpDesktop);
}
protected void createFrame() {
    MyInternalFrame frame = new MyInternalFrame();
    frame.setVisible(true);
    jdpDesktop.add(frame);
    try {
        frame.setSelected(true);
    } catch (java.beans.PropertyVetoException e) {
        }
 }

class MyInternalFrame extends JInternalFrame {
    int xPosition = 30, yPosition = 30;
    public MyInternalFrame() {
        super("IFrame #" + (++openFrameCount), true, // resizable
            true, // closable
            true, // maximizable
            true);// iconifiable
        setSize(300, 300);
        setLocation(xPosition / openFrameCount, yPosition /   openFrameCount);
        // Add some content:
        add(new JLabel("hello IFrame #" + (openFrameCount)));
       }
}
...
...
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...