Как установить размер JDesktopPane - PullRequest
0 голосов
/ 28 марта 2012

Я разрабатываю Java-приложение с главной панелью, в которую я добавляю JDesktopPane. пользователи, нажимающие на JButton, покажут JInternalFrame. Моя проблема в том, что если я использую внешний вид Mac OSx, JDesktopPane показывает с правильным размером JInternalFrame, если я использую другой внешний вид, он будет отображать JInternalFrame в измерении экрана. Вот что я делаю:

На основной JPanel:

jDesktopPane1 = new JDesktopPane();
setContentPane(jDesktopPane1);

когда пользователи нажимают JButton(s):

public void addInDesktop(JInternalFrame frame){
        frame.setVisible(true);
        try {   
                        jDesktopPane1.setSize(frame.getSize());
                        jDesktopPane1.setPreferredSize((frame.getSize()));
                        System.out.println(frame.getSize().toString());
                        System.out.println(jDesktopPane1.getSize().toString());
            jDesktopPane1.add(frame);
            frame.moveToFront();
            frame.setSelected(true);
        } catch (PropertyVetoException e) {
            e.printStackTrace();
        }
    }

System.out.println говорит мне, что размеры JDesktopPane и JInternalFrame одинаковы, но почему он показывает мне JInternalFrame в полноэкранном режиме?

Ответы [ 2 ]

2 голосов
/ 28 марта 2012

Если вы распечатаете размеры после jDesktopPane1.add (frame), вы, вероятно, увидите изменение в размере. Я бы предположил, что установка панели рабочего стола в размер внутреннего фрейма - плохая практика - я бы подумал, что он должен оставаться размером клиентской области родительского JFrame, в котором находится панель рабочего стола (фрейм, где вы вызываете setContentPane ( jDesktopPane1)), и просто оставьте внутреннюю рамку где-то внутри нее естественно.

Что может происходить, так это то, что установка одинакового размера панели и внутреннего элемента может заставить внешний вид предполагать, что вы имеете в виду «развернутый», и поэтому при правильном разрешении размера панели рабочего стола делает что-то странное с внутренней рамкой.

Попробуйте , а не , вызывая setSize () / setPreferredSize () на панели рабочего стола, и посмотрите, будет ли он работать одинаково для всех L & F. Возможно, тогда вы сможете выяснить, что лучше всего делать с внутренним фреймом, если его размер по умолчанию не соответствует желаемому.

0 голосов
/ 16 июля 2016

Если вы хотите установить размер, равный ширине и ширине вашего jframe, в который вы собираетесь вставить. Вы можете использовать

variable_desktopPane.setBounds(this.getBounds());

Под this Я имею в виду Jframe, который вы называете его границами.

Надеюсь, это поможет, привет.

...