Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2012, 12:19   #1
alcohol40
Новичок
Джуниор
 
Регистрация: 02.05.2012
Сообщений: 2
Вопрос Фон в апплете

Здравствуйте! В данный момент я изучаю апплеты в Java и мне дали задачу написать игру "Жизнь". У меня возник вопрос, можно ли как-то нарисовать поле так, чтобы потом его не перерисовывать, а перерисовывать только клетки. Я пытался через Canvas, но ничего не получилось. Может подскажете?

Собственно код
Код апплета
Код:
package Life;

import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
/*
 * <applet code = "MainApplet" width=500 height = 400> </applet>
 */

public class LifeApplet extends Applet implements Runnable, KeyListener, MouseListener {

    Thread t = null;
    boolean stopFlag, cells[][], mouse_clk = false, key_pressed = false;
    Life l;
    Background back;

    @Override
    public void init() {
        //setBackground(Color.RED);
        //setForeground(Color.GREEN);
        setLayout(null);
        back = new Background((float) 100);
        add(back);
        back.setLocation(0, 0);
        //back
        addKeyListener(this);
        addMouseListener(this);
        this.setFocusable(true);
        
    }

    @Override
    public void start() {
        t = new Thread(this);
        t.setPriority(5);
        stopFlag = false;
        t.start();
    }

    public void run() {
        back.repaint();
        while (!key_pressed) {
            if (mouse_clk) {
                repaint();
            }
        }
        for (;;) {
            try {
                repaint();
                Thread.sleep(500);
                l.simulate();
                if (!stopFlag) {
                    break;
                }
            } catch (InterruptedException e) {
                showStatus("Thread was interrupted");
            }
        }
    }

    @Override
    public void stop() {
        stopFlag = false;
        t = null;
    }

    @Override
    public final void paint(Graphics g) {
    }

    public void keyTyped(KeyEvent e) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void keyPressed(KeyEvent e) {
        if (e.equals(KeyEvent.VK_ENTER)) {
            key_pressed = true;
        }
    }

    public void keyReleased(KeyEvent e) {
        if (key_pressed) {
            key_pressed = false;
        }
    }

    public void mouseClicked(MouseEvent e) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void mousePressed(MouseEvent e) {

        if (e.equals(MouseEvent.BUTTON1)) {
            mouse_clk = true;
        }

    }

    public void mouseReleased(MouseEvent e) {
        if (mouse_clk) {
            int x = e.getX();
            int y = e.getY();
            mouse_clk = false;
            cells[x / 7 + 1][y / 7 + 1] = !cells[x / 7 + 1][y / 7 + 1];
        }

    }

    public void mouseEntered(MouseEvent e) {
    }

    public void mouseExited(MouseEvent e) {
    }
}
Код Canvas'a
Код:
import java.awt.*;
import java.awt.image.ImageObserver;
import java.text.AttributedCharacterIterator;

public class Background extends Canvas {

    Color g;

    public Background(Float g) {
        this.g = Color.black;
    }

   
    public final void paint(Graphics gr) {                 
        Dimension size = getSize();
        gr.setColor(Color.BLACK);
        gr.fillRect(0, 0, size.width, size.width);
        gr.setColor(Color.red);
        for (int x = 0; x <= size.width; x += 7) {
            gr.drawLine(x, 0, size.width, size.width);
        }
        for (int y = 0; y <= size.width; y += 7) {
            gr.drawLine(0, y, size.width, size.width);
        }
    }
}
alcohol40 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работают кнопки в апплете PastoriXx Общие вопросы по Java, Java SE, Kotlin 12 24.12.2010 19:21
Фон на фон. Alex Cones HTML и CSS 3 11.09.2010 16:06
Фон =Kroshka= Microsoft Office Word 2 23.07.2009 14:39
фон beygul Общие вопросы Delphi 5 28.09.2008 11:28
Фон Стаханов_Андрей Помощь студентам 5 04.03.2008 08:20