Внутренние JFrames - PullRequest
       7

Внутренние JFrames

1 голос
/ 31 августа 2011

Я хочу знать, как показать внутреннюю рамку в разгаре.Это означает, что когда требуется JFrame, обычно я делаю:

new MyJFrame().setVisible(true);

Допустим, предыдущая форма также должна отображаться.И когда отображается этот новый кадр, другой новый значок отображается на панели задач (кажется, что два отдельных приложения выполняются в одном приложении). Я хочу не отображать этот значок и отображать оба кадра, как они есть в одном приложении.Спасибо

Ответы [ 2 ]

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

.. хочу не показывать этот значок и отображать оба кадра, как они есть в одном приложении.

Другое решение - поместить 2-й и последующие свободно плавающие элементы в JDialog.

например. использования как рамки, так и диалогового окна для хранения дополнительного содержимого.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class FrameTest {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                initGui();
            }
        });
    }

    public static void initGui() {
        final JFrame f = new JFrame("Frame Test");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel gui = new JPanel(new GridLayout(0,1,5,5));
        final Content c = new Content();
        JButton frame = new JButton("Frame");
        frame.addActionListener( new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
                JFrame f2 = new JFrame("Content");
                f2.add(c.getContent());
                f2.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                f2.pack();
                f2.setLocationByPlatform(true);
                f2.setVisible(true);
            }
        });
        gui.add(frame);

        JButton dialog = new JButton("Dialog");
        dialog.addActionListener( new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
                JDialog d = new JDialog(f);
                d.add(new Content().getContent());
                d.pack();
                d.setLocationByPlatform(true);
                d.setVisible(true);
            }
        });
        gui.add(dialog);

        f.add(gui);
        f.pack();
        f.setVisible(true);
    }
}

class Content {

    public Component getContent() {
        JPanel p = new JPanel();
        p.add(new JLabel("Hello World!"));
        return p;
    }
}
2 голосов
/ 31 августа 2011

У вас есть один JFrame для приложения.

Вы можете отобразить несколько JPanels в пределах JFrame.

Или, как указал trashgod, вы можете иметь несколько JInternalFrames в пределах JDesktopFrame.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...