web-dev-qa-db-fra.com

JFrame sans bordure de cadre, bouton maximum, bouton minimum et icône de cadre

Je voudrais créer une bordure sans cadre, un bouton maximum, un bouton minimum et une icône de cadre.

25
Chan Pye

Appelez setUndecorated(true) sur votre JFrame.

Cette méthode ne peut être appelée que lorsque le cadre n'est pas affichable (voir JavaDoc ).

enter image description here

47
Peter Lang

Ce code explique comment vous pouvez y parvenir.

Remarque: setUndecorated (true); dans le constructeur.

Vous ne pouvez pas décorer le cadre alors qu'il est déjà affiché.

public class MyFrame extends JFrame {

private JPanel contentPane;
private JTextField textField;

/**
 * Launch the application.
 */
public static void main(String[] args) {

                MyFrame frame = new MyFrame();
                frame.setVisible(true);

}
/**
 * Create the frame.
 */
public MyFrame() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 450, 300);
    contentPane = new JPanel();
    contentPane.setBackground(Color.ORANGE);
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));


    /* important Statement */
    setUndecorated(true);
}

}

Frame without Border

7
Vishwanath gowda k

Vous pouvez le Java.awt.Window classe. Un Window est comme un JFrame, mais sans bordure.

Notez que le constructeur de classe Window a besoin d'un Frame (Java.awt.Frame) comme argument, mais vous pouvez le définir sur null. Vous pouvez également étendre la classe Window pour la personnaliser comme ceci:

public class MyWindow extends Window{
   public MyWindow(){
      super(null); // creates a window with no Frame as owner
      setBounds(x, y, width, height);
      setVisible(true);
   }
}

Dans main, vous pouvez créer une instance de MyWindow au lieu de Window.

public static void main (String[] args) {
    Window window = new MyWindow();
    // Other stuff in main
}

J'espère que ça aide!

1
Ramdane

A l'intérieur du constructeur, vous pouvez mettre le code setUndecorated (true), il disparaîtra Frame.

Par exemple: // Ceci est un constructeur

public freak() {    
    super("Images");
    panel = new JPanel();
    ImageIcon image = new ImageIcon("C:\\Users\\shilu.shilu-PC\\Desktop\\2.jpg");
    label = new JLabel(image);
    add(panel);
    add(label);

    //Main thing is this one
    setUndecorated(true);
    //Just add this code in your constructor
}
1
sophin

Utilisez la méthode frame.getContentPane (); cette méthode retourne à l'intérieur du contenu de n'importe quel cadre. Mais vous devez le lancer dans un JPanel. PrintUI utilisant JPanel pas JFrame ....

0
Harsh Rawat