2012-10-28 28 views
7

Dizüstü bilgisayarım için bir araç geliştiriyorum. JFrame'deki simge durumuna küçültmeyi devre dışı bırakmak istiyorum. Zaten maksimize ve kapat düğmesini devre dışı bıraktım.JFrame simge durumuna küçült düğmesini devre dışı bırakın

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

, nasıl düğmesini en aza indirmek devre dışı bırakmak için söyle: Burada

en üst düzeye çıkarma ve kapatma düğmesini devre dışı bırakmak için koddur.

+0

* "Lütfen, kısaltma düğmesinin nasıl devre dışı bırakılacağını bana söyleyin." * Lütfen, bunu yapma. –

+0

GUI'nin gerçek amacı nedir? Bu bir kiosk mu? –

+0

, pil şarj bilgisini dizüstü bilgisayardaki kullanıcıya gösterir. –

cevap

9

Genellikle, değil, ne yapabileceğini herhangi bir kullanıcı eylemi kullanımını JWindow izin vermek istemiyorsanız bir JDialog yerine JFrame

7

kullanımı olduğunu edebilirsiniz.

+0

Ayrıca bkz. [Tam Ekran Özel Mod API] (http://docs.oracle.com/javase/tutorial/extra/fullscreen/index.html). Bir uygulama yapıyorsanız. Ekrandaki her piksele boyadığından çok kullanışlı olabilir. –

6

@MadProgrammer söylediği gibi (ona 1), bu kesinlikle

  • bir JDialog kullanmak ve onu kapalı olamaz emin olmak için setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); aramak Bunun yerine isterdi iyi bir fikir değil.

  • Ayrıca JWindow (+1 ila @ M. M.) veya JFrame örneğinizde setUndecorated(true); numaralı telefonu da kullanabilirsiniz.

Alternatif eklemek isteyebilirsiniz sizin windowIconified(..) geçersiz kılma ve yöntemi içinde setState(JFrame.NORMAL); arayarak JFrame un-minimizable vb yapmak WindowAdapater kendi:

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

Ben jframe.setUndecorated(true) kullanılacağını öneriyoruz Pencere olaylarından hiçbirini kullanmıyorsunuz ve uygulamanın yeniden boyutlandırılmasını istemiyorsunuz. Paneli taşımak istiyorsanız, yaptığım MotionPanel'u kullanın.

+0

İnsanlar hala Windows görev çubuğundaki simgesini tıklatarak JFrame'i en aza indirebilir ... –

+0

Bu durumda sistem tepsisine küçültün. – Sorter

0

JFrame türünüzü UTILITY olarak değiştirmeyi deneyebilirsiniz. Ardından, programınızda btn'yi en aza indirip btn'yi en üst düzeye çıkarmayı görmezsiniz.

İlgili konular