Netbeans GUI Designer и панели приложений фиксированного размера - PullRequest
3 голосов
/ 30 октября 2008

У меня проблема с созданием общей панели фиксированного размера для приложения с сенсорным графическим интерфейсом, которое должно занимать весь экран. В двух словах, сенсорный экран имеет разрешение 800 x 600 пикселей, и поэтому я хочу, чтобы основная панель графического интерфейса была такого размера.

Когда я запускаю новый проект с графическим интерфейсом в NetBeans, я устанавливаю свойства главной панели для минимального / максимального / предпочтительного размера равными 800 x 600, и панель в представлении «Дизайн» меняет размер. Однако при запуске приложения оно изменяется до исходного размера по умолчанию.

Добавление этого кода после initComponents () не помогает:

this.mainPanel.setSize(new Dimension(800,600));
this.mainPanel.setMaximumSize(new Dimension(800,600));
this.mainPanel.setMinimumSize(new Dimension(800,600));
this.mainPanel.repaint();

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

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

Помощь приветствуется!

Ответы [ 3 ]

1 голос
/ 30 октября 2008
0 голосов
/ 30 октября 2008

Я не уверен, как работает ваше устройство с сенсорным экраном. Но если вы используете предварительный просмотр Netbeans, ваша панель помещается во внешний контейнер, такой как JFrame / JWindow. И, может быть, вы установите рамку на 800x600.

Если это так, то проблема может заключаться в том, что рамка съедает несколько пикселей за свою рамку, оставляя размер панели <800x600. И в этом случае ваша панель не сможет использовать ваши настройки min / max и вернуться к размерам по умолчанию. </p>

0 голосов
/ 30 октября 2008

Я использую этот метод для выполнения задачи, но не уверен, что она лучшая, и вам нужно подождать, пока она вызывается, пока кадр не появится на экране.

protected void growBig()
  {
    int screenWidth = java.awt.Toolkit.getDefaultToolkit().getScreenSize().width;
    int screenHeight = java.awt.Toolkit.getDefaultToolkit().getScreenSize().height;
    Rectangle rectangle = getFrame().getBounds();
    rectangle.setSize(screenWidth, screenHeight);
    getFrame().setBounds(0, 0, screenWidth, screenHeight);
    getFrame().setSize(screenWidth, screenHeight);
    getFrame().doLayout();
    getFrame().validate();
    updateUI();
  }
...