2013-08-03 81 views
27

我創建一個JFrame,我調用該方法setSize(500, 500)。現在期望的行爲是JFrame在任何情況下不應該由用戶調整大小。通過最大化或拖動邊界。它應該是500x500。我該怎麼做?如果您能更好地指導我,我還附上了代碼。JFrame:如何禁用窗口大小調整?

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

請爲什麼1 setBound(),2 non_resizeable 3.調用setVisible(真) ;必須是構造器中的最後一行代碼 – mKorbel

+2

已經考慮過使用[** LayoutManagers **](http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html)?因爲Swing非常需要它,所以學習起來並不難,可能需要花時間手動設置每個組件的位置。 – Azad

回答

81

你可以在構造函數中使用一個簡單的調用「框架初始化」下:

setResizable(false); 

此調用後,窗口不會改變大小。

12

使用setResizable您的JFrame

yourFrame.setResizable(false); 

但延長的JFrame通常是一個壞主意。

+1

-1擴展JFrame不是一個壞主意。我一直這樣做。但無論如何,這是一個偏好問題,而不是正式頒佈的事實,即擴展'JFrame'是一個壞主意。 – tbodt

+2

這通常是不好的設計。如果您不擴展JFrame功能(通常是這種情況),在類中使用JFrame屬性是更好的設計。 – mael

+0

我只是認爲它應該是個人品味,而不是法理上的標準。 – tbodt

5

它的東部用途:

frame.setResizable(false); 
7

此代碼可以幫助您:[全部最大化,並在JFrame防止調整]

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

簡單地寫在構造一個行:

setResizable(false); 

這將使其無法調整框架。

3

您可以使用this.setResizable(false);frameObject.setResizable(false);

3

以防萬一有人不理解周圍的第6次:

setResizable(false);