JAVA如何在运行时调整JFrame的大小?
如何从构造函数外部使用JAVA如何在运行时调整JFrame的大小?,java,swing,resize,jframe,Java,Swing,Resize,Jframe,如何从构造函数外部使用静态方法调整JFrame的大小 让我解释一下为什么我需要这个 我正在用Java编写一个类似塞尔达的游戏,我有一个地牢。在我的地牢里,有普通大小的房间,还有老板的房间。因此,我的问题是,由于老板室的尺寸与其他房间不同,是否可以在游戏后期调整我的JFrame?我直接在JFrame上绘图 我尝试使用setSize(int,int),但它只能用作非静态的 如果我问的不清楚,请告诉我 谢谢你的阅读 如何从构造函数外部使用 静态方法 将JFrame创建为局部变量,不要扩展JFrame
静态方法调整JFrame
的大小
让我解释一下为什么我需要这个
我正在用Java编写一个类似塞尔达的游戏,我有一个地牢。在我的地牢里,有普通大小的房间,还有老板的房间。因此,我的问题是,由于老板室的尺寸与其他房间不同,是否可以在游戏后期调整我的JFrame
?我直接在JFrame
上绘图
我尝试使用setSize(int,int)
,但它只能用作非静态的
如果我问的不清楚,请告诉我
谢谢你的阅读
如何从构造函数外部使用
静态方法
- 将JFrame创建为局部变量,不要扩展JFrame
所以我的问题是,是否有可能在稍后的时候调整JFrame的大小
游戏因为老板的房间的尺寸不同于其他的
- 是的,我会选择preffer JFrame.pack(然后它的子对象返回正确的PreferredSize并由正确的LayoutManager放置)、over setSize(int,int)或setPreferredSize(new Dimension(int,int))以及JFrame.pack(),所有提到的三个选项在所有情况下都会在运行时起作用
我直接在JFrame上画画
- 这是错误的决定,使用JPanel进行绘制,覆盖JFrame.pack()的JPanel getPreferredSize,然后JFrame和自定义绘制的所有坐标都基于getPreferredSize计算
我尝试使用setSize(int,int),但它只能用作非静态
- 如果没有一个
如何从构造函数外部使用
静态方法
- 将JFrame创建为局部变量,不要扩展JFrame
所以我的问题是,是否有可能在稍后的时候调整JFrame的大小
游戏因为老板的房间的尺寸不同于其他的
- 是的,我会选择preffer JFrame.pack(然后它的子对象返回正确的PreferredSize并由正确的LayoutManager放置)、over setSize(int,int)或setPreferredSize(new Dimension(int,int))以及JFrame.pack(),所有提到的三个选项在所有情况下都会在运行时起作用
我直接在JFrame上画画
- 这是错误的决定,使用JPanel进行绘制,覆盖JFrame.pack()的JPanel getPreferredSize,然后JFrame和自定义绘制的所有坐标都基于getPreferredSize计算
我尝试使用setSize(int,int),但它只能用作非静态
- 如果没有一个
如果您想在静态上下文中使用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);
}
}
通过将JFrame声明为静态,您可以在静态和非静态上下文中调用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;
}
....
}
如果您想在静态上下文中使用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);
}
}
通过将JFrame声明为静态,您可以在静态和非静态上下文中调用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;
}
....
}
按照您所描述的方式,需要一个静态关键字
,通常会指向错误的编程实践。请提供一个简短的可编译程序,它实际上解释了您的目标:-)按照您所描述的方式,需要一个静态关键字
,通常会指向错误的编程实践。请提供一个简短的可编译程序,它实际上解释了您的目标:-)