Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Swing --> JavaFX, Переписать графический компонент в JavaF 
:(
    Опции темы
Adrenal1ne
Дата 18.6.2013, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 16.6.2013

Репутация: нет
Всего: нет



Всем привет!
Только начал изучать Java.
Пишу программу крестики-нолики(игра).

Написал графический компонент ячейка в Swing (9 ячеек на поле). Хочу попробовать переписать графику на JavaFX . Как данный компонент можно реализовать на JavaFX ???

Код

package ru.zero.graphics;

import ru.zero.game_logic.Field;
import ru.zero.graphics_logics.MouseClickedEvent;

import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class GraphicCell extends JComponent implements MouseListener {

    public static int WIDTH = 32;
    public static int HEIGHT = 32;
    public static final int SPACE = 10;
    private boolean isSelected = false;
    public boolean isClean = true;
    public boolean isZero;
    public int gX, gY;
    private Field logicField;
    private GraphicField gField;

    public GraphicCell(Field logicField, GraphicField gField, int x, int y) {
        this.logicField = logicField;
        this.gField = gField;
        this.gX = x;
        this.gY = y;
        setSize(WIDTH, HEIGHT);
        addMouseListener(this);
    }

    public void paint(Graphics g) {

        Graphics2D g2d = (Graphics2D) g;
        int lw = getWidth() - 1;
        int lh = getHeight() - 1;
        int rw = GraphicField.SPACE_BETWEEN * 2;
        int rh = GraphicField.SPACE_BETWEEN * 2;

        BasicStroke pen = new BasicStroke(5, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER);

        Color color = Color.red;

        if (isSelected) {
            color = Color.green;
        }

        g2d.setPaint(new GradientPaint(lw, lh, Color.white, lw / 4, lh / 4, color, true));
        g2d.fillRoundRect(0, 0, lw, lh, rw, rh);
        g2d.setColor(color);
        g2d.drawRoundRect(0, 0, lw, lh, rw, rh);

        if (!isClean && !isZero) {
            g2d.setStroke(pen);
            g2d.setColor(Color.black);
            g2d.drawLine(SPACE, SPACE, getWidth() - SPACE, getHeight() - SPACE);  // TODO вот так например можно изменять размер рисуемых фигур
            g2d.drawLine(getWidth() - SPACE, SPACE, SPACE, getHeight() - SPACE);
        } else if (!isClean) {
            g2d.setStroke(pen);
            g2d.setColor(Color.black);
            g2d.drawOval(SPACE, SPACE, getWidth() - 2 * SPACE, getHeight() - 2 * SPACE);
        }

    }

    public void mouseEntered(MouseEvent e) {
        if(!Field.gameOver) {
        isSelected = true;
        repaint();
        }
    }

    public void mouseExited(MouseEvent e) {
        if(!Field.gameOver) {
            isSelected = false;
            repaint();
        }
    }

    public void mouseClicked(MouseEvent e) {

        new MouseClickedEvent().clickOnMouseLeftButton(logicField, this, gField);

    }

    public void mousePressed(MouseEvent e) {
    }

    public void mouseReleased(MouseEvent e) {
    }
}

PM MAIL   Вверх
Amp
Дата 18.6.2013, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: нет
Всего: 17



Отнаследоваться от Region или Group, добавить в них соответствующие шейпы (две линии для крестика и окружность для нолика). Потом позиционировать их на сцене либо с помощью каких-либо контейнеров (грида например), либо ручками. По клику мыши добавлять в контейнер.
PM MAIL   Вверх
Adrenal1ne
  Дата 18.6.2013, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 16.6.2013

Репутация: нет
Всего: нет



Amp, А можно какой-нить простенький пример с коментами, а то для новичка пока сложнова-то для понимания некоторые определения.  smile 

Или статейку с примером понятным, если можно.

Это сообщение отредактировал(а) Adrenal1ne - 18.6.2013, 11:13
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0683 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.