2010-04-19 29 views
15

Necesito eliminar los botones maximizar y minimizar de JFrame. Por favor sugiere cómo hacer esto.¿Cómo elimino los botones maximizar y minimizar de un JFrame?

+0

Eche un vistazo a http://stackoverflow.com/questions/2527021/how-to-disable-minimize-button-in-frame y vea si eso responde su pregunta. –

+0

dice sobre el uso de JDialog, en myeclipse estoy importando java.awt. * Pero no se reconoce JDialog. alguna ayuda sobre eso? – silverkid

+0

'JDialog' y' JFrame' están ambos en el paquete 'java.swing'. Necesitas 'importar java.swing. *'. –

Respuesta

7
import java.awt.event.WindowAdapter; 
import java.awt.event.WindowEvent; 

import javax.swing.JDialog; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 

public class Dlg extends JDialog { 
    public Dlg(JFrame frame, String str) { 
     super(frame, str); 
     addWindowListener(new WindowAdapter() { 
      public void windowClosing(WindowEvent evt) { 
       System.exit(0); 
      } 
     }); 
    } 

    public static void main(String[] args) { 
     try { 
      Dlg frame = new Dlg(new JFrame(), "No min max buttons"); 
      JPanel panel = new JPanel(); 
      panel.setSize(200, 200); 
      JLabel lbl = new JLabel("blah blah"); 
      panel.add(lbl); 
      frame.add(panel); 
      frame.setSize(400, 400); 
      frame.setVisible(true); 
     } catch (IllegalArgumentException e) { 
      System.exit(0); 
     } 
    } 
} 
+0

¿Hay alguna desventaja a esto? – iKlsR

+3

¿Cuál es tu respuesta? No explica lo que está haciendo, y no veo dónde está eliminando los botones mínimo/máximo de un JFrame. Aunque ahora veo a dónde te va con esto, tardé un minuto o dos en preguntarme cómo era esta una respuesta. – Aaron

+0

Tenga cuidado, esta solución hace que sea un poco más difícil enfocar la ventana. Es un diálogo, lo que significa que no aparecerá como un programa abierto en Windows. Si el usuario enfoca otra ventana, como un navegador web, para volver a enfocar el diálogo, el usuario debería minimizar todos los demás programas. –

12

Aquí está un ejemplo relacionado usando setUndecorated() desactivar las decoraciones de marco.

alt text

import java.awt.EventQueue; 
import java.awt.event.ActionEvent; 
import javax.swing.AbstractAction; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 

public class FrameTest implements Runnable { 

    public static void main(String[] args) { 
     EventQueue.invokeLater(new FrameTest()); 
    } 

    @Override 
    public void run() { 
     JFrame f = new JFrame(); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     f.setUndecorated(true); 
     JPanel panel = new JPanel(); 
     panel.add(new JLabel("Stackoverflow!")); 
     panel.add(new JButton(new AbstractAction("Close") { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       System.exit(0); 
      } 
     })); 
     f.add(panel); 
     f.pack(); 
     f.setLocationRelativeTo(null); 
     f.setVisible(true); 
    } 
} 
9

Nota: Inicialmente editado stacker 's respuesta, pero se sugirió que se crea una nueva respuesta en su lugar.

Existen algunas formas de personalizar los controles de ventana disponibles para los usuarios.

Actualmente, la única manera de eliminar el de maximizar y minimizar los botones, mientras se mantiene la barra de título y botón de cierre, es utilizar un JDialog en lugar de un JFrame:

import java.awt.Dimension; 
import java.awt.event.WindowAdapter; 
import java.awt.event.WindowEvent; 

import javax.swing.JDialog; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 

public class DialogDemo { 

    public static void main(String[] args) { 
     JDialog dialog = new JDialog(new JFrame(), "No min max buttons"); 
     // necessary as setDefaultCloseOperation(EXIT_ON_CLOSE) is 
     // not available for JDialogs. 
     dialog.addWindowListener(new WindowAdapter() { 
      public void windowClosing(WindowEvent evt) { 
       System.exit(0); 
      } 
     }); 

     JLabel label = new JLabel("blah blah"); 
     JPanel panel = new JPanel(); 
     panel.setPreferredSize(new Dimension(400, 400)); 
     panel.add(label); 

     dialog.add(panel); 
     dialog.pack(); 
     dialog.setVisible(true); 
    } 
} 

La solución de diálogo hace que sea imposible para los usuarios para minimizar y maximizar la ventana, incluso mediante el uso de atajos, sin embargo, no elimina la posibilidad de cambiar el tamaño de la ventana.

El uso de setResizable(false) eliminará el botón de maximizar solamente, a costa de no poder cambiar el tamaño de la ventana.

Por último, como se menciona en trashgod, el método setUndecorated(true) desactivará las decoraciones del marco, eliminando la barra de título y los bordes de la ventana. Esto hace que sea más difícil para los usuarios arrastrar, cambiar el tamaño y cerrar la ventana, aunque no imposible, ya que estas acciones aún se pueden realizar con las teclas de método abreviado.

+0

Esta es la única respuesta que realmente responde la pregunta. – Aaron

Cuestiones relacionadas