2008-10-29 2 views
3

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

Когда я запускаю новый проект GUI в 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, потому что мне нужен полный контроль над тем, где я помещаю вещи.

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

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

ответ

0

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

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(); 
    } 
+0

Это не сработало. Основная проблема (я предполагаю) заключается в том, что updateUI() не разрешает базовый класс (FrameView), и я не могу вызвать его на кадре верхнего уровня, возвращаемом функцией getFrame(), после чего я использовал переразмер , Размер устанавливается в соответствии с отладчиком, он просто не влияет. – 2008-10-30 15:11:56

1

Вы пытались java full screen mode?

+0

Thanks; это выглядит многообещающим. Я работаю над своей локальной машиной; теперь мне просто нужно посмотреть, поддерживает ли сенсорная система. Похоже, это должно ... – 2008-10-30 15:12:38

0

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

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

+0

Ну, это происходит независимо от размера панели (например, меньше или больше). Кажется, это связано с тем, что внешний размер JFrame задан каким-то стандартным ресурсом, и он хочет изменить размер на основе добавленных виджетах. Итак, если у него есть только одна кнопка, она хочет быть маленькой, более крупной и т. Д. – 2008-10-30 15:13:59

Смежные вопросы