Изменение размера JFrame в настольном приложении - NetBeans - PullRequest
1 голос
/ 25 ноября 2011

Я занимаюсь разработкой Java-приложения для настольных компьютеров в среде IDE NetBeans. Я хочу показать экран входа в систему JFrame с небольшим размером. Затем, после входа в систему, я хочу расширить JFrame до полного экрана с другими панелями. Проблема заключается в том, что он отображается один раз правильно, а в следующий раз он показывает экран входа в систему в полноэкранном режиме. Как я могу избежать этого? Я размещаю разные панели на одном кадре.

При входе в систему

this.getFrame().setExtendedState(Frame.NORMAL);
this.getFrame().setSize(360, 233);
this.getFrame().setResizable(false);

После входа в систему

this.getFrame().setExtendedState(Frame.MAXIMIZED_BOTH);

Ответы [ 3 ]

2 голосов
/ 25 ноября 2011

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

Показать рамку в полном размере и сделать ее владельцем модального JDialog или JOptionPaneэто показывает детали входа в систему.Если произойдет сбой входа в систему и пользователь решит отменить, а не пытаться снова, выйдите из приложения.

Если я создаю новый JDialog для входа в систему, то как я могу показать его изначально?

JFrame f = this.getFrame();
JDialog loginDialog = new JDialog(f,"Login",true);
loginDialog.add(loginPanel);  
loginDialog.pack();
f.setExtendedState(Frame.MAXIMIZED_BOTH)
f.setVisible(true);
loginDialog.setLocationRelativeTo(f);
loginDialog.setVisible(true);
2 голосов
/ 25 ноября 2011

Редактировать после чата;

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

Больше нет ничего, что я мог бы сделать с кодами, не имея всего проекта :)

Предыдущие ответы;В качестве альтернативы вы можете использовать JDialog для входа в систему в следующий раз при отображении экрана входа в систему, измените действия, которые вы делаете при настройке полноэкранного режима.

Некоторые примеры кода помогают нам лучше ответить на ваш вопрос.Редактировать 2: он в следующий раз перед тем, как использовать экран входа в систему;

this.getFrame().setExtendedState(Frame.NORMAL);

Редактировать 3: Пример кода

import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JFrame;


public class MyFrame extends JFrame implements MouseListener {

    /**
     * @param args
     */
    public static void main(String[] args) {

        MyFrame frame = new MyFrame();
        frame.setVisible(true);
        frame.setSize(200, 200);
        frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
        frame.addMouseListener(frame);
    }

    @Override
    public void mouseClicked(MouseEvent e) {
        if(this.getExtendedState() == JFrame.MAXIMIZED_BOTH){
            this.setExtendedState(JFrame.NORMAL);
        }
        else{
            this.setExtendedState(JFrame.MAXIMIZED_BOTH);
        }
    }

    @Override
    public void mousePressed(MouseEvent e) {

    }

    @Override
    public void mouseReleased(MouseEvent e) {

    }

    @Override
    public void mouseEntered(MouseEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void mouseExited(MouseEvent e) {
        // TODO Auto-generated method stub

    }

}
1 голос
/ 07 октября 2012

Вставьте ваш конструктор, после функции initComponent () код простого куска

initComponents();/*Function automated*/
setMinimumSize(new Dimension(700,400).getSize());
setExtendedState(MAXIMIZED_BOTH);/*To see your application starts maximized!*/
...