2013-07-17 65 views
1

我如何resize a JFrame從構造函數的外部和static methodJAVA如何在運行時調整JFrame的大小?

讓我解釋一下爲什麼我需要這個。

我正在用Java編寫一個類似塞爾達的遊戲,並且我有一個地下城。在我的地牢裏,有正常大小的房間和老闆房。所以我的問題是,是否有可能在遊戲後期調整我的JFrame,因爲Boss房間的尺寸與其他尺寸不同?我直接在JFrame上畫畫。

我試過使用setSize(int,int),但它只能用作non-static

請讓我知道,如果我問的是不明確的。

感謝您閱讀

+0

極品'靜態keyword'的,在你所描述的方式,通常指向了錯誤的編程習慣,請你提供很短的編譯程序,實際上解釋了自己的目標: - ) –

回答

3

如何調整一個JFrame從構造函數外,並用 靜態方法?

  • 創建的JFrame作爲局部變量,千萬不要去擴展JFrame的

所以我的問題是,是否可以稍後調整我的JFrame上,因爲BOSS房間的尺寸 遊戲與其他人不同?

  • 是的,我會preffer JFrame.pack(那麼其孩子的返回正確PREFERREDSIZE並通過適當的佈局管理奠定了),過的setSize(INT,INT)或有必要對setPreferredSize(新尺寸(INT,INT))與JFrame.pack(),所有提到的三個選項適用於運行在所有情況下

我直接在JFrame的繪製。

  • ,這是錯誤的決定,使用JPanel的繪畫,覆蓋JPanels的getPreferredSize爲JFrame.pack()則JFrame的和自定義paiting所有的座標都基於的getPreferredSize
  • 計算

我嘗試使用setSize(int,int),但它只能用作非靜態的。

0

如果你想通過聲明JFrame的使用在靜態情況下的setSize(INT,INT),你應該做這樣的事情

public class Main { 

    static JFrame f; 

    public static void main(String args[]) { 
     f = new JFrame(); 
     f.add(new JLabel("prova")); 
     f.setVisible(true); 
     f.setSize(900, 900); 
    } 
} 

不知道作爲靜態,您可以在靜態和非靜態上下文中調用setSize。

如果你正在嘗試做的做

public class MyFrame extends JFrame() { 

    public static void changeSize(int a, int b) { 
     setSize(a,b); 
    } 

    .... 
} 

這不能做,因爲靜態方法不能引用非靜態的物體(如類MyFrame的當前實例。靜態方法。只能訪問靜態對象,如

public class MyFrame extends JFrame() { 

    static int l; 

    public static void changeSize(int a, int b) { 
     l = 10; 
    } 

    .... 
} 
相關問題