2013-08-03 27 views
27

Sto creando un JFrame e chiamo il metodo setSize(500, 500). Ora il comportamento desiderato è che JFrame non debba essere ridimensionato dall'utente in qualsiasi condizione. O massimizzando o trascinando i bordi. Dovrebbe essere 500x500. Come posso farlo? Ho anche allegato il codice nel caso in cui tu possa guidarmi meglio.JFrame: come disabilitare il ridimensionamento della finestra?

package com.techpapa;  
    import javax.swing.*; 
    import java.awt.*; 
    import java.awt.event.*; 

    public class MainWindow extends JFrame{ 


private JTextField 
      write; 
private JRadioButton 
      rb1, 
      rb2, 
      rb3; 
private ButtonGroup 
      bg; 

private ActionListener al = new ActionListener(){ 
    public void actionPerformed(ActionEvent e){ 
     write.setText("JRadioButton : " + ((JRadioButton)e.getSource()).getText()); 
    } 

}; 

public MainWindow(){ 
    //Frame Initialization 
    setSize(500, 500); 
    setDefaultCloseOperation(EXIT_ON_CLOSE); 
    setLayout(null); 
    setTitle(".:JRadioButton:."); 
    setVisible(true); 

    //Components Initialization 
    write = new JTextField(20); 
    write.setEditable(false); 
    rb1 = new JRadioButton("Male", false); 
    rb1.addActionListener(al); 
    rb2 = new JRadioButton("Female", false); 
    rb2.addActionListener(al); 
    rb3 = new JRadioButton("I don't want to specify", true); 
    rb3.addActionListener(al); 
    bg = new ButtonGroup(); 

    //Add radio buttons to buttongroup 
    bg.add(rb1); bg.add(rb2); bg.add(rb3); 

    //Add to window 
    add(write); 
    write.setBounds(140, 100, 150, 20); 
    write.setDragEnabled(true); 
    add(rb1); 
    rb1.setBounds(180, 200, 100, 30); 
    add(rb2); 
    rb2.setBounds(180, 225, 100, 30); 
    add(rb3); 
    rb3.setBounds(180, 250, 130, 30); 

} 

public static void main(String[] args) { 
    new MainWindow(); 

} 

} 
+0

prega perché 1. setBound(), 2. non_resizeable 3. setVisible (vero) ; deve essere l'ultima riga del codice nel contructor – mKorbel

+2

Hai pensato di utilizzare [** LayoutManagers **] (http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html)? Perché è altamente richiesto con Swing, inoltre non è così difficile da imparare, forse prende quel tempo quando si imposta manualmente la posizione di ciascun componente. – Azad

risposta

81

è possibile utilizzare una semplice chiamata nel costruttore sotto "l'inizializzazione frame":

setResizable(false); 

Dopo questa chiamata, la finestra non sarà ridimensionabile.

12

Uso setResizable sul JFrame

yourFrame.setResizable(false); 

Ma si estende JFrame è generalmente una cattiva idea.

+1

-1 l'estensione di JFrame non è una cattiva idea. Lo faccio tutto il tempo. Ma comunque, è una questione di preferenza, non il fatto ufficialmente promulgato che estendere 'JFrame' è una cattiva idea. – tbodt

+2

Questo è generalmente un cattivo design. Se non si estendono le funzionalità di JFrame (che è generalmente il caso), avere una proprietà JFrame in una classe è una progettazione migliore. – mael

+0

Penso che dovrebbe essere un gusto personale, non uno standard de jure. – tbodt

5

il suo uso est:

frame.setResizable(false); 
7

Questo codice può essere aiuterà a: [Entrambi massimizzare e prevenire il ridimensionamento su un JFrame]

frame.setExtendedState(JFrame.MAXIMIZED_BOTH); 
frame.setVisible(true); 
frame.setResizable(false); 
8

Basta scrivere una riga nel costruttore:

setResizable(false); 

In questo modo sarà possibile ridimensionare la cornice.

3

È possibile utilizzare this.setResizable(false); o frameObject.setResizable(false);

3

Solo nel caso qualcuno non ha capito il 6 ° volta:

setResizable(false);