2013-08-03 51 views
27

Tôi đang tạo một JFrame và tôi gọi phương thức setSize(500, 500). Bây giờ hành vi mong muốn là JFrame không nên được thay đổi kích cỡ bởi người dùng trong bất kỳ điều kiện nào. Hoặc bằng cách tối đa hóa hoặc bằng cách kéo các đường viền. Nó phải là 500x500. Tôi làm nó như thế nào? Tôi cũng đã đính kèm mã trong trường hợp bạn có thể hướng dẫn tôi tốt hơn.JFrame: Cách tắt kích thước cửa sổ?

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

xin vui lòng tại sao 1. setBound(), 2. non_resizeable 3. setVisible (true) ; phải là dòng mã cuối cùng trong contructor – mKorbel

+2

Bạn đã nghĩ đến việc sử dụng [** LayoutManager **] (http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html)? Bởi vì nó rất cần thiết với Swing, nó cũng không phải là khó để tìm hiểu, có thể mất thời gian đó khi bạn tự thiết lập vị trí của mỗi thành phần. – Azad

Trả lời

81

Bạn có thể sử dụng một cuộc gọi đơn giản trong các nhà xây dựng theo "khung khởi":

setResizable(false); 

Sau cuộc gọi này, cửa sổ sẽ không thay đổi kích thước.

12

Sử dụng setResizable trên JFrame bạn

yourFrame.setResizable(false); 

Nhưng mở rộng JFrame nói chung là một ý tưởng tồi.

+1

-1 mở rộng JFrame không phải là một ý tưởng tồi. Tôi làm nó suốt. Nhưng dù sao, nó là một vấn đề ưu tiên, không phải là thực tế chính thức ban hành rằng mở rộng 'JFrame' là một ý tưởng tồi. – tbodt

+2

Đây thường là thiết kế tồi. Nếu bạn không mở rộng các tính năng JFrame (thường là trường hợp), việc có một thuộc tính JFrame trong một lớp là thiết kế tốt hơn. – mael

+0

Tôi chỉ nghĩ rằng nó nên là hương vị cá nhân, không phải là một tiêu chuẩn de jure. – tbodt

5

đó là sử dụng đông:

frame.setResizable(false); 
7

Bộ luật này có thể được Giúp bạn: [Cả tối đa hóa và ngăn ngừa thay đổi kích thước trên JFrame]

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

Đơn giản chỉ cần viết một dòng trong constructor:

setResizable(false); 

Điều này sẽ làm cho nó không thể thay đổi kích thước khung.

3

Bạn có thể sử dụng this.setResizable(false); hoặc frameObject.setResizable(false);

3

Chỉ trong trường hợp ai đó không hiểu thời gian 6 xung quanh:

setResizable(false); 
Các vấn đề liên quan