Это неправильно / плохо использовать более одного холста (не одновременно) в программе? - PullRequest
2 голосов
/ 15 января 2012

Итак, я довольно новичок в 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 голосов
/ 15 января 2012

Прочтите об использовании CardLayout .

Объект CardLayout является менеджером макета для контейнера.Он рассматривает каждый компонент в контейнере как карту.Одновременно видна только одна карта, и контейнер действует как стопка карт.Первый компонент, добавленный к объекту CardLayout, является видимым компонентом при первом отображении контейнера.

Вы можете использовать Canvas, если хотите, но нет никаких причин, по которым вы не могли просто использовать панели.

...