web-dev-qa-db-fra.com

Comment puis-je supprimer uniquement le bouton Agrandir d'un JFrame?

J'ai un JFrame et je veux supprimer le bouton maximiser de cela.

J'ai écrit le code ci-dessous, mais il a supprimé maximiser, minimiser et fermer de mon JFrame.

JFrame frame = new JFrame();
frame.add(kart);
frame.setUndecorated(true);
frame.setVisible(true);
frame.setSize(400, 400);

Je souhaite supprimer uniquement le bouton Agrandir du JFrame.

34
Mahdi_Nine

Rendez-le non redimensionnable:

frame.setResizable(false);

Vous aurez toujours les boutons de réduction et de fermeture.

64
sjr

Vous ne pouvez pas supprimer le bouton d'un JFrame. Utilisez plutôt un JDialog. Il n'a pas de bouton Agrandir.

8
jzd

Dans les propriétés JFrame -> maximumSize = minimumSize. Et redimensionnable = faux. Terminé! Le bouton est désactivé.

3
user2397831
import Java.awt.event.WindowAdapter; 
import Java.awt.event.WindowEvent;    
import javax.swing.JDialog; import javax.swing.JFrame;
import javax.swing.JPanel;

public class Test extends JDialog {
    public Test(JFrame frame, String str) {
        super(frame, str);
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent evt) {
                System.exit(0);
            }
        });
    }

    public static void main(String[] args) {
        try {
            Test myFrame = new Test(new JFrame(), "Removing maximize button");
            JPanel panel = new JPanel();
            panel.setSize(100, 100);
            myFrame.add(panel);
            myFrame.setSize(100, 100);
            myFrame.setVisible(true);
        } catch (IllegalArgumentException e) {
            System.exit(0);
        }
    } }
3
Bartzilla
/**
 * Removes the buttons from the JDialog title frame. This is a work around
 * to removing the close button
 * 
 * This is confirmed to work with the Metal L&F
 */
public void removeAllTitleFrameButtons() {

    /* Get the components of the dialog */
    Component[] comps = this.getRootPane().getComponents();

    /* Indicator to break from loop */
    boolean breakFromLoop = false;

    /*
     * Go through the components and find the title 
     * pane and remove the buttons.  
     */
    for(Component comp : comps) {
        /* Shall we break from loop */
        if(breakFromLoop) break;
        if(comp.getClass().getName().indexOf("JLayeredPane") >0) {
            for(Component jcomp : ((JLayeredPane)comp).getComponents()) {
                if(jcomp.getClass().getName().indexOf("Title") > 0) {

                    /* Get the XXXXTitlePane Components */
                    Component[] titlePaneComps = ((JComponent)jcomp).getComponents();

                    for(Component tpComp : titlePaneComps) {
                        if(tpComp instanceof JButton) {
                            ((JButton)tpComp).setVisible(false);                        
                        }
                    }
                    /* No need to continue processing */
                    breakFromLoop = true;
                    break;
                }
            }
        }
    }
}
1
Gino

Accédez à la propriété JFrame et définissez redimensionnable non coché.

0
unbuntry

frame.setUndecorated (true)

cela supprimera le bouton d'agrandissement ainsi que le bouton de fermeture et de minimisation.

0
Muhammad Zakria

est décrit comment implémenter un "JFrame" sans maximiser et minimiser les boutons. Vous avez juste besoin "d'incapsuler" un JFrame dans JDialog:

import javax.swing.*;
import Java.awt.*;
import Java.awt.event.*;

public class RemoveMaxAndMinButton extends JDialog{
  public RemoveMaxAndMinButton(JFrame frame, String str){
    super(frame,str);
    addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent evt){
        System.exit(0);
            }
        });
  }
  public static void main(String[] args){
    try{
      RemoveMaxAndMinButton frame = new RemoveMaxAndMinButton(new JFrame(),
            "Remove the Minimize and Maximize button from the Title Bar");
      JPanel panel = new JPanel();
      panel.setSize(200,200);
      JLabel lbl = new JLabel("RoseIndia.Net");
      panel.add(lbl);
      frame.add(panel);
      frame.setSize(400, 400);
      frame.setVisible(true);
    }
    catch(IllegalArgumentException e){
      System.exit(0);
    }
  } 

}

0
StKiller