2012-10-28 13 views
7

Sto sviluppando uno strumento per il mio laptop. Voglio disabilitare il pulsante di minimizzazione in JFrame. Ho già disabilitato il pulsante di ingrandimento e chiusura.Disable JFrame minimizza pulsante

Ecco il codice per disattivare massimizzazione e chiusura pulsante:

JFrame frame = new JFrame(); 
frame.setResizable(false); //Disable the Resize Button 
// Disable the Close button 
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); 

ti prego, dimmi come disattivare il tasto minimizzare.

+0

* "Per favore, dimmi come disabilitare il pulsante di riduzione al minimo." * Per favore, non farlo. –

+0

Qual è l'obiettivo effettivo della GUI qui? È un chiosco? –

+0

visualizza le informazioni sulla carica della batteria per l'utente nel laptop. –

risposta

9

In generale, non è possibile, cosa si può fare è utilizzare un JDialog invece di JFrame

7

Se non si desidera consentire qualsiasi uso azione dell'utente JWindow.

+0

Vedere anche [API in modalità esclusiva a schermo intero] (http://docs.oracle.com/javase/tutorial/extra/fullscreen/index.html). Se si sta facendo un'app. che dipinge ogni pixel sullo schermo, può essere molto utile. –

6

Come ha detto @MadProgrammer (+1 per lui), questo non è sicuramente una buona idea si preferisce desidera

  • utilizzare un JDialog e chiamare setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); per assicurarsi che non può essere chiuso.

  • È anche possibile utilizzare un JWindow (da +1 a @M. M.) o chiamare setUndecorated(true); sull'istanza JFrame.

In alternativa si consiglia di aggiungere la tua WindowAdapater per rendere il JFrame non-minimizable ecc sovrascrivendo windowIconified(..) e chiamando setState(JFrame.NORMAL); dall'interno del metodo:

//necessary imports 
import java.awt.event.WindowAdapter; 
import java.awt.event.WindowEvent; 
import javax.swing.JFrame; 
import javax.swing.JOptionPane; 

public class Test { 

    /** 
    * Default constructor for Test.class 
    */ 
    public Test() { 
     initComponents(); 
    } 

    public static void main(String[] args) { 

     /** 
     * Create GUI and components on Event-Dispatch-Thread 
     */ 
     javax.swing.SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       Test test = new Test(); 
      } 
     }); 
    } 
    private final JFrame frame = new JFrame(); 

    /** 
    * Initialize GUI and components (including ActionListeners etc) 
    */ 
    private void initComponents() { 
     frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); 
     frame.setResizable(false); 
     frame.addWindowListener(getWindowAdapter()); 

     //pack frame (size JFrame to match preferred sizes of added components and set visible 
     frame.pack(); 
     frame.setVisible(true); 
    } 

    private WindowAdapter getWindowAdapter() { 
     return new WindowAdapter() { 
      @Override 
      public void windowClosing(WindowEvent we) {//overrode to show message 
       super.windowClosing(we); 

       JOptionPane.showMessageDialog(frame, "Cant Exit"); 
      } 

      @Override 
      public void windowIconified(WindowEvent we) { 
       frame.setState(JFrame.NORMAL); 
       JOptionPane.showMessageDialog(frame, "Cant Minimize"); 
      } 
     }; 
    } 
} 
0

vorrei si consiglia di utilizzare jframe.setUndecorated(true) come non si sta utilizzando nessuno degli eventi della finestra e non si desidera ridimensionare l'applicazione. Utilizzare lo MotionPanel che ho creato, se si desidera spostare il pannello.

+0

Le persone possono comunque ridurre a icona JFrame facendo clic sull'icona nella barra delle attività di Windows ... –

+0

In tal caso, ridurre a icona il vassoio di sistema – Sorter

0

Si può provare a modificare il tipo di JFrame su UTILITY. Quindi non vedrai entrambi minimizzare btn e massimizzare btn nel tuo programma.