2012-10-28 16 views
7

Pracuję nad narzędziem dla mojego laptopa. Chcę wyłączyć przycisk minimalizacji w JFrame. Mam już wyłączony przycisk maksymalizacji i zamykania.Wyłącz przycisk minimalizacji JFrame

Oto kod, aby wyłączyć zwiększenie i przycisk zamykania:

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

Proszę, powiedz mi, jak wyłączyć przycisk minimalizacji.

+0

* "Proszę, powiedz mi, jak wyłączyć przycisk minimalizacji." * Proszę, nie rób tego. –

+0

Jaki jest rzeczywisty cel GUI? Czy to kiosk? –

+0

wyświetla informacje o naładowaniu baterii użytkownikowi w laptopie. –

Odpowiedz

9

Generalnie, nie można, co można zrobić, to użyć JDialog zamiast JFrame

7

Jeśli nie chcesz, aby jakiekolwiek wykorzystanie działania użytkownika JWindow.

+0

Zobacz także [Tryb pełnoekranowego interfejsu API trybu automatycznego] (http://docs.oracle.com/javase/tutorial/extra/fullscreen/index.html). Tworząc aplikację. który maluje każdy piksel na ekranie, może być bardzo przydatny. –

6

Jak powiedział @MadProgrammer (+1 do niego), to na pewno nie jest dobrym pomysłem wolisz chcą

  • użyć JDialog i nazywają setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); aby upewnić się, że nie może być zamknięty.

  • Można również użyć numeru JWindow (+1 do @M. M.) lub zadzwonić pod numer setUndecorated(true); na instancję JFrame.

Alternatywnie możesz dodać własny WindowAdapater aby JFrame un-minimizable itp nadrzędnymi windowIconified(..) i nazywając setState(JFrame.NORMAL); od wewnątrz metody:

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

Polecam do korzystania jframe.setUndecorated(true) jako nie używasz żadnych zdarzeń okna i nie chcesz, aby rozmiar tej aplikacji został zmieniony. Użyj MotionPanel, którą zrobiłem, jeśli chciałbyś przesunąć panel.

+0

Ludzie mogą nadal minimalizować JFrame, klikając ikonę na pasku zadań Windows ... –

+0

W takim przypadku zminimalizować do zasobnika systemowego – Sorter

0

Możesz spróbować zmienić typ JFrame na UTILITY. Wtedy nie zobaczysz zarówno zminimalizowania btn jak i maksymalizacji btn w swoim programie.

Powiązane problemy