2013-07-17 41 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; 
    } 

    .... 
} 
相关问题