2016-03-15 5 views
2

Я хотел бы использовать апплет для переключения между 2 "кадрами".Как перекрасить методы рисования в java-апплет?

Я хочу использовать апплет, чтобы что-то нарисовать, а затем удалить его и нарисовать что-то еще. Есть какой-либо способ сделать это?

Пример:

if(true){ 
    public void paint1(Graphics g) { 
     g.setColor(Color.black); 
     g.fillRect(80,400, 20, 10); 
    } 
}else 
    public void paint2(Graphics g) { 
     g.setColor(Color.green); 
     g.fillRect(50,440, 70, 60); 
    } 
} 

Все попытки я пытался на это разбился апплет.

Мой проект: Я и мой друг пишу простой код, где нам нужно использовать какую-то графику апплета. Мы сделали идею сделать программу, в которой 2 символа прыгают вверх и вниз. проблема в том, что у нас будет «ИИ», который прыгает всякий раз, когда ему это нравится. Так что CardLayout не будет работать, потому что тогда мы контролируем все.

+1

Картина * что-то против чего-то еще * - очень неопределенное описание, поэтому я действительно не знаю, что вам нужно, но посмотрите на [CardLayout] (https://docs.oracle.com/javase/tutorial/uiswing /layout/card.html). Это типичный способ переключения между различными состояниями GUI. – kiheru

+0

Я задал вопрос, и вы ответили правильно. Моя вина. Я отредактировал этот вопрос так, чтобы он дал то, что мне нужно более точно. – Marc

+0

@Marc Я также предлагаю использовать CardLayout, если вы не можете быть более конкретным, что вы хотите рисовать в 2 кадрах. – user3437460

ответ

3

Я предлагаю использовать CardLayout, если вы намерены «переключиться» между двумя чертежами.

Однако, если вы хотите продолжать то, что вы в настоящее время на рисование на основе состояния, вы можете сделать что-то вроде этого:

class DrawingSpace extends JPanel{ 

    private BufferedImage display; 
    //Other variables, initializations, constructors not shown 

    private void init(){ 
     display = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); 
    } 

    public void draw(){ 
     if(whatever){ //if whatever == true 
      Graphics2D g2 = display.createGraphics(); 
      g2.setColor(Color.BLACK); 
      g2.fillRect(80, 400, 20, 10); 
      repaint(); 
     }else{ 
      Graphics2D g2 = display.createGraphics(); 
      g2.setColor(Color.GREEN); 
      g2.fillRect(50, 440, 70, 60); 
      repaint(); 
     } 
    } 

    @Override 
    public void paintComponent(Graphics g){ 
     super.paintComponent(g); 
     g.drawImage(display, 0, 0, width, height, null); 
    } 
} 
0

Ну первый вопрос: Когда вы хотите переключиться? На кнопке klick? Через несколько миллисекунд?

С кнопкой это довольно просто: Вам просто нужно нарисовать 2 панели и показать первый по умолчанию. После того, как кнопка кликнута, вы можете использовать методы repaint() и revalidate() для обновления JFrame.