JavaFX Импорт изображений и графики

Я новичок в Java и работаю с программой Netbeans. Я очень запутался в том, как импортировать изображения или даже использовать графику для рисования изображения. Я установил свою сцену и хочу, например, импортировать несколько изображений по экрану, но я застрял на первом шаге получения изображения на сцене. Любые предложения о том, как заставить графику работать, будут отличным началом.

package spaceinvaders;

import java.util.Scanner;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

/**
 *
 * @author Twissted
 */

public class SpaceInvaders extends Application {

@Override
public void start ( Stage stage ) throws Exception {

    Pane root = new Pane ();
    Scene scene = new Scene ( root, 500, 500, Color.BLACK );
    stage.setTitle ( "Space Invaders" );
    stage.setScene ( scene );




    System.out.println ( "Please enter how many rows of aliens you wish to encounter: " );
    int r1;
    Scanner keyboard = new Scanner ( System.in );
    r1 = keyboard.nextInt ();


    stage.show ();

}



public static void main (String [] args ) {
    launch ( args );
}

}

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

Не используйте Scanner в потоке вашего приложения JavaFX! Вы заблокируете его запуск. У вас вопрос о загрузке и отображении изображения PNG / JPEG? Кроме того, вы можете тратить больше времени, используя фреймворк, снимая с вас много рутинной работы, например FXGL
M. le Rutte 21.05.2018 22:42

Честно говоря, лучше не знаю. Это единственный способ, которым я смог выяснить, как получить ввод и назначить его переменной, которую я планирую использовать позже, чтобы назначить позиции x и y изображениям, которые я хочу разместить на сцене. Представьте себе космических захватчиков. Я хочу вводить пользовательские данные для строк и столбцов и размещать на экране кучу инопланетян. Мой главный вопрос - как отобразить это изображение PNG / JPEG на экране. Это даже не обязательно должен быть PNG / JPEG, даже небольшой квадрат, где я хочу, а все остальное я сделаю.

Twissted 21.05.2018 22:49

Кажется, вам нужно сначала изучить программирование Event-Driven. Затем сделайте базовый учебник. Вы забегаете вперед.

Sedrick 21.05.2018 22:51

Я согласен с @Sedrick. Чтение этот учебник может быть хорошим началом.

M. le Rutte 21.05.2018 22:52

Это мое первое задание после недели обучения в школе. Я прочитал учебник до этого момента и ничего не получил ни от него, ни от своего инструктора. Я должен научиться этому. У меня есть опыт работы с Python, но при переходе на Java все по-другому. Я изучу программирование, управляемое событиями. Я ценю его :)

Twissted 21.05.2018 22:53
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
5
464
1

Ответы 1

Вы можете создать ImageView и добавить его к вашему Pane. Переместите его свойства LayoutX и LayoutY, чтобы разместить его на экране. В этом примере файл sprite.png должен находиться в том же пространстве пакета, что и класс. Убедитесь, что вы упаковали его правильно.

ObservableList<Node> children = pane.getChildren();
ImageView sprite = new ImageView(getClass().getResource("sprite.png").toString());
 children.add(sprite);
 sprite.setLayoutX(300d);
 sprite.setLayoutY(20d);

Я все же советую использовать FXGL.

Мы учимся с использованием Netbeans 8.2. Мне кажется, FXGL - это еще одна программа? Я хотел бы ...

Twissted 21.05.2018 22:54

NetBeans - это IDE, FXGL - это библиотека, которая помогает вам создавать игры на JavaFX, предоставляя вам общее поведение. Любой порядочный программист будет использовать библиотеку вместо того, чтобы тратить время на выкатку собственных вещей.

M. le Rutte 21.05.2018 22:56

Хорошо, я скачаю его и поищу, может ли он мне помочь в будущем :)

Twissted 21.05.2018 22:57

Обязательно загляните в его вики, объяснив, как им пользоваться.

M. le Rutte 21.05.2018 23:00

Другие вопросы по теме