2016-12-16 127 views
0

我有一個問題,我設置框架的大小,但不起作用。我發現了一個關於這個話題,但它對我沒有幫助...爪哇鞦韆setSize

我試過getContentPane().getSize(500,500),但沒有。

import java.awt.event.*; 
import java.awt.*; 
import javax.swing.*; 
public class Mere extends JFrame{ 
    private JPanel b; 
    public Mere(String titlu){ 
     setSize(500,500); 
     setLayout(null); 
     this.getSmth(); 
     pack(); 
     show(); 
    } 
    public void getSmth(){ 
     JLabel user=new JLabel("User"); 
     user.setBounds(10,10,80,25); 
     getContentPane().add(user); 

     JTextField userText=new JTextField(20); 
     userText.setBounds(100,10,160,25); 
     getContentPane().add(userText); 

     JPasswordField pas=new JPasswordField(20); 
     pas.setBounds(100,40,160,25); 
     getContentPane().add(pas); 

     JButton n=new JButton("Register"); 
     n.setBounds(180,80,100,30); 
     getContentPane().add(n); 

     JLabel pass=new JLabel("Pass"); 
     pass.setBounds(10,40,100,25); 
     getContentPane().add(pass); 
     getContentPane().setVisible(true); 
    } 
    public static void main(String[]args){ 
     new Mere("yas"); 
    } 
} 

回答

4
  1. 你打電話setSize()後調用pack();

    Oracle docs

    此窗口的大小,以適合其子組件的優選尺寸和佈局。如果任何一個維度小於先前對setMinimumSize方法的調用所指定的最小大小,則窗口的結果寬度和高度會自動放大。

    因此,您寧可覆蓋getPreferredSize()方法或刪除pack()調用。見Should I avoid the use of setPreferred/Maximum/MinimumSize?(YES)

    然而,最好的做法是使用佈局管理器(如下explanined),然後調用pack()並讓經理做的工作,同時計算preferredSize

  2. 還你」重新使用null佈局。 Swing設計用於處理不同的PLAF,屏幕尺寸和分辨率,而像素完美的GUI可能看起來像是製作複雜GUI的最佳和更快的方法,因此您在這方面的進步越大,因此維護它的問題越多,所以請繼續並使用適當的Layout Manager或它們的組合。見Null Layout is EvilWhy is it frowned upon to use a null layout in Java Swing?

  3. 另一件事是,你不把你的程序在Event Dispatch Thread (EDT),看到SwingUtilities.invokeLater() why is it needed?this answer關於如何使用它

  4. 另一件事我看到一個例子是,你JFrame翻譯成英文它說你的類JFrameJFrame不靈活,當你需要將它添加到另一個Component,而你應該創建一個JFrame實例,如果你真的需要擴展的東西,從一個JPanel

+0

非常感謝你,我使用null作爲佈局,因爲它更容易。 – Eratys

+0

請記住,容易並不總是正確的,一旦你學會使用佈局管理器,你會發現使用它們更容易 – Frakcool

+0

是的,你有權利。我想我會嘗試GridBagLayout,無論如何感謝提示:D – Eratys