2012-10-28 2 views
7

Я разрабатываю инструмент для своего ноутбука. Я хочу отключить кнопку минимизации в JFrame. Я уже отключил кнопку увеличения и закрытия.Отключить кнопку свернуть JFrame

Вот код, чтобы отключить Maximize и закрыть кнопки:

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

Пожалуйста, скажите мне, как отключить кнопку сворачивания.

+0

* «Пожалуйста, скажите, как отключить кнопку« Свернуть ».» * Пожалуйста, не делайте этого. –

+0

Какова фактическая цель графического интерфейса здесь? Это киоск? –

+0

отображает информацию о заряде аккумулятора пользователю в ноутбуке. –

ответ

9

Как правило, вы не можете, то, что вы можете сделать, это использовать JDialog вместо JFrame

7

Если вы не хотите, чтобы любое использование JWindow действий пользователя.

+0

См. Также API полноэкранного эксклюзивного режима (http://docs.oracle.com/javase/tutorial/extra/fullscreen/index.html). При создании приложения. который рисует каждый пиксель на экране, это может быть очень удобно. –

6

Как сказал @MadProgrammer (+1 к нему), то это, безусловно, не очень хорошая идея, которую вы бы скорее хотели бы

  • использовать JDialog и вызвать setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);, чтобы убедиться, что он не может быть закрыт.

  • Вы также можете использовать JWindow (+1 до @ M. M.) или позвонить по телефону setUndecorated(true); на свой JFrame экземпляр.

В качестве альтернативы вы можете добавить свои собственные WindowAdapater сделать JFrame не-сворачивания т.д., путем переопределения windowIconified(..) и вызова setState(JFrame.NORMAL); внутри метода:

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

Я бы порекомендовал вам использовать jframe.setUndecorated(true) в качестве вы не используете ни одно из событий окна и не хотите, чтобы приложение было изменено. Используйте MotionPanel, который я сделал, если вы хотите переместить панель.

+0

Люди все еще могут свести к минимуму JFrame, щелкнув значок на панели задач Windows ... –

+0

В этом случае вы снизте до системного трея – Sorter

0

Вы можете попытаться изменить тип JFrame на UTILITY. Тогда вы не увидите как минимизировать btn, так и максимизировать btn в своей программе.

 Смежные вопросы

  • Нет связанных вопросов^_^