Pregunta

Estoy tratando de maximizar el JFrame desde dentro JMenuBar, no puedo dejar pasar una referencia al marco. ¿Es posible obtener una referencia a la trama que se utiliza en?

i puede llegar al componente de nivel superior pero no tiene una forma de maximizar y minimizar marco.

    public Container getApplicationFrame(ActionEvent event){
         JMenuItem menuItem = (JMenuItem) event.getSource();  
         JPopupMenu popupMenu = (JPopupMenu) menuItem.getParent();  
         Component invoker = popupMenu.getInvoker(); 
         JComponent invokerAsJComponent = (JComponent) invoker;  
         Container topLevel = invokerAsJComponent.getTopLevelAncestor();  
         return topLevel;
    }
¿Fue útil?

Solución

Puede obtener la ventana que contiene los JPanel a través de

Window window = SwingUtilities.getWindowAncestor(popupMenu);

A continuación, puede maximizar el uso que window.setSize() - o, ya que parece que saber que es un JFrame, echarlo al fotograma y utilizar el método setExtendedState que Kevin menciona. Ejemplo código de la Java desarrolladores Almanaque para que:

// This method minimizes a frame; the iconified bit is not affected
public void maximize(Frame frame) {
    int state = frame.getExtendedState();

    // Set the maximized bits
    state |= Frame.MAXIMIZED_BOTH;

    // Maximize the frame
    frame.setExtendedState(state);
}

Otros consejos

Sin duda, se puede esconder el marco en cuestión en una variable local en alguna parte?

En cuanto a la maximización de la realidad del marco una vez que tienes el ahold de ella, Frame.setExtendedState (MAXIMIZED_BOTH) es probablemente lo que quiere.

Aunque no es tan elegante como podría ser, camino rápido a tierra en su código existente:

public Frame getApplicationFrame(ActionEvent event){
         if(event.getSource() == null) return null;

         Window topLevel = SwingUtilities.getWindowAncestor(event.getSource());

         if(!(topLevel instanceof Frame)) return null;

         return (Frame)topLevel;
}

...
//Somewhere in your code
Frame appFrame = getApplicationFrame(myEvent);
appFrame.setExtendedState(appFrame.getExtendedState() | Frame.MAXIMIZED_BOTH);
...

Java mínimo la versión 1.4.2. Avisado que no he probado el código anterior, pero que debería hacerse una idea.

La clase que crea el marco y la barra de menú también puede actuar como el ActionListener para el elemento de menú, ya que tiene acceso tanto el marco como la barra de menú.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top