在程序中使用多个画布(不是同时)是错误还是坏?

时间:2012-01-15 19:25:19

标签: java canvas awt frame

所以我对java和编程很新(4个月),我正在尝试用菜单制作一个基本的蛇游戏。我通过在框架上添加和删除它们来在每个不同的组件之间切换。这是代码:

public class screen extends Frame {
private static final long serialVersionUID = 1L;
private static screen f;
private static menu ex;
private static loadsettings settings;
public screen(String frameLabel, int width, int height) {
    setSize(width, height);
    setLocation(50,50);
    setResizable(true);
    setUndecorated(true);
    setVisible(true);  
}

public static void main(String[] args){
    settings = new loadsettings();      
    f = new screen("Game", settings.getWindowWidth(), settings.getWindowHeight());
    ex = new menu(f,settings); 
    f.add(ex);
    ex.createBufferStrategy(2);
    ex.requestFocus();
}
public static void new1Player(){
    f.setSize(400,400);
    f.removeAll();
    player1 ex = new player1(f,settings);
    f.add(ex);
    ex.createBufferStrategy(2);
    ex.requestFocus();
}
public static void new2Player(){
    f.setSize(600,600);
    f.removeAll();
    player2 ex = new player2(f,settings);
    f.add(ex);
    ex.createBufferStrategy(2);
    ex.requestFocus();
}
public static void newMenu(){
    f.setSize(400,400);
    f.removeAll();
    menu ex = new menu(f,settings);
    f.add(ex);
    ex.createBufferStrategy(2);
    ex.requestFocus();
}
}

问题是,每个组件都是Canvas,因此不断添加和删除它们。我只是想知道,这是不好的编码,是否有更好的方法来做到这一点? 感谢。

1 个答案:

答案 0 :(得分:0)

了解如何使用CardLayout

  

CardLayout对象是容器的布局管理器。它对待   容器中的每个组件都作为卡片。只有一张卡片可见   一段时间,容器充当一堆卡片。首先   添加到CardLayout对象的组件是可见组件   首先显示容器。

如果您愿意,可以使用Canvas,但没有理由不能使用Panel。