webentwicklung-frage-antwort-db.com.de

Wie kann ich nur die Schaltfläche "Maximieren" von einem JFrame entfernen?

Ich habe ein JFrame und möchte die Schaltfläche Maximieren entfernen.

Ich habe den folgenden Code geschrieben, aber er hat maximize, minimum und close aus meinem JFrame entfernt.

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

Ich möchte nur die Maximierungsschaltfläche aus dem JFrame entfernen.

34
Mahdi_Nine

Verändere die Größe nicht:

frame.setResizable(false);

Sie haben weiterhin die Schaltflächen Minimieren und Schließen.

64
sjr

Sie können die Schaltfläche nicht aus einem JFrame entfernen. Verwenden Sie stattdessen ein JDialog. Es gibt keine Maximierungsschaltfläche.

8
jzd

In den JFrame-Eigenschaften -> maximumSize = minimumSize. Und veränderbar = falsch. Erledigt! Die Schaltfläche ist deaktiviert.

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

Gehen Sie zur Eigenschaft von JFrame und deaktivieren Sie die Option zum Ändern der Größe.

0
unbuntry

frame.setUndecorated (true)

dadurch werden die Maximierungsschaltfläche sowie das Schließen und Minimieren der Schaltfläche entfernt.

0
Muhammad Zakria

Dort wird beschrieben, wie ein "JFrame" ohne Schaltflächen zum Maximieren und Minimieren implementiert wird. Sie müssen nur einen JFrame in JDialog "einkapseln":

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