Как указать JDesktopPane заполнить весь экран JFrame - PullRequest
0 голосов
/ 15 мая 2018

Любое тело, пожалуйста, предложите код Как заставить JDesktopPane заполнить весь экран JFrame в Java Netbeans IDE.

1 Ответ

0 голосов
/ 15 мая 2018
  1. Установите макет вашего JFrame на BorderLayout.
  2. Добавьте ваш JDesktopPane в область CENTER вашего JFrame:

    JFrame f = new JFrame();
    f.setBounds(50, 50, 500, 400);
    f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    f.setLayout(new BorderLayout());
    JDesktopPane desktopPane = new JDesktopPane();
    f.add(desktopPane, BorderLayout.CENTER);        
    f.setVisible(true);
    

Волшебство исходит от того, как BorderLayout управляет расположением дочерних компонентов.Все, что будет добавлено в CENTER область BorderLayout, заполнит столько области, сколько он может получить из своего контейнера.

Если вы хотите увеличить JInternalFrame внутри JDesktopPane, вам следуетпозвоните setMaximum(true) на него после того, как он будет добавлен к базовому JDesktopPane:

public class JDesktop {

    public static void main(String[] args) {
        JFrame f = new JFrame();
        f.setBounds(50, 50, 500, 400);
        f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        f.setLayout(new BorderLayout());

        JInternalFrame internalFrame1 = new JInternalFrame("Internal Frame 1", true, true, true, true);     
        internalFrame1.setSize(150, 150);
        internalFrame1.setVisible(true);        

        JDesktopPane desktopPane = new JDesktopPane();
        desktopPane.add(internalFrame1);
        try {
            internalFrame1.setMaximum(true);
        } catch (PropertyVetoException e) {
            e.printStackTrace();
        }
        f.add(desktopPane, BorderLayout.CENTER);
        f.setVisible(true);
    }
} 

Теперь, когда вы поняли, что неплохо знать о значениях по умолчанию.Менеджер по умолчанию для JFrame - BorderLayout, и когда вы добавляете что-либо к JFrame без указания ограничения для области, он будет добавлен в область CENTER.Таким образом, вы можете опустить эти строки в своем коде:

f.setLayout(new BorderLayout());

, и вы можете добавить desktopPane просто используя эту строку:

f.add(desktopPane);
...