2012-10-28 14 views
7

Ich entwickle ein Werkzeug für meinen Laptop. Ich möchte die Schaltfläche zum Minimieren im JFrame deaktivieren. Ich habe die Schaltfläche Maximieren und Schließen bereits deaktiviert. HierDisable JFrame minimieren Taste

ist der Code zu deaktivieren, Maximieren und Schließen-Taste:

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

Bitte sagen Sie mir, wie deaktivieren minimieren Taste.

+0

* "Bitte sagen Sie mir, wie Sie den Minimieren-Knopf deaktivieren können." * Bitte tun Sie das nicht. –

+0

Was ist das eigentliche Ziel der GUI hier? Ist es ein Kiosk? –

+0

Anzeige der Informationen zur Akkuladung für den Benutzer im Laptop. –

Antwort

9

Im Allgemeinen können Sie nicht, was Sie tun können, ist eine JDialog anstelle von JFrame

7

Wenn Sie keine Aktion Benutzer Verwendung JWindow erlauben wollen.

+0

Siehe auch die [Vollbild-Exklusivmodus-API] (http://docs.oracle.com/javase/tutorial/extra/fullscreen/index.html). Wenn Sie eine App erstellen. das malt jeden Pixel auf dem Bildschirm, es kann sehr praktisch sein. –

6

Wie @MadProgrammer sagte (+1 ihm), das ist definitiv keine gute Idee, die Sie eher zu

  • eine JDialog und setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); sicherstellen rufen verwenden möchten würde es nicht geschlossen werden kann.

  • Sie könnten auch eine JWindow (+1 bis @M. M.) oder setUndecorated(true); auf Ihrer JFrame Instanz verwenden.

Alternativ können Sie Ihre eigene WindowAdapater hinzufügen möchten die JFrame un-minimizable etc zu machen, indem windowIconified(..) zwingende und setState(JFrame.NORMAL); aus dem Aufruf der Methode:

//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

Ich würde Ihnen empfehlen, zu verwenden jframe.setUndecorated(true) als Sie verwenden keines der Fensterereignisse und möchten nicht, dass die Größe der Anwendung geändert wird. Verwenden Sie die MotionPanel, die ich gemacht habe, wenn Sie das Panel verschieben möchten.

+0

Benutzer können den JFrame immer noch minimieren, indem Sie auf das Symbol in der Windows-Taskleiste klicken ... –

+0

In diesem Fall minimieren Sie auf System Tray – Sorter

0

Sie können versuchen, Ihren JFrame-Typ in UTILITY zu ändern. Dann werden Sie in Ihrem Programm nicht sowohl btn als auch btn maximieren sehen.