8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
1

JavaFX. Самое первое задание в JavaFX вместо Java. Не используя вспомогательных объектов

12.12.2018, 14:49. Показов 5937. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет, уважаемые форумчане!
Мы работали на программировании в вузе на Java. Теперь дали задание сделать работу не в Java, а уже в JavaFX с графическим интерфейсом.

Суть задания:

Не используя вспомогательных объектов, переставить отрицательные элементы данного списка в конец, а положительные - в начало этого списка.
Отобразить список с помощью элемента Horizontal List View по нажатию кнопки делать одну перестановку.

В общем, код уже как бы имеется и я приложил его ниже, но как вообще завернуть его в графический интерфейс, не понятно совсем:

Требование данного задания от преподавателя:

Диапазон значений элементов -100 100
На форме сделать 2 элемента HorizontalListView, первый из них исходные значения, второй-перестановочные.
2 кнопки "Сгенерировать" и "Расчет", первая заполняет случайными значениями и отрицательными тоже, первый Horisontal List.
Вторая кнопка считывает эти элементы и обрабатывает, переставляет.
Название кнопок и List по назначению в коде: пример button1 StartGenerate, button2 Calculate, List1-SourceList, List2-ListCalculatedValues.

Итак, в программе имеются три класса Main, Сontroller, Lab - Main и Controller мною изменены не были.
Вот код программы, если в его реализации что-то ошибочно, хорошо бы это исправить:

Заранее благодарю!

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package sample;
 
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.stream.Collectors;
 
import sun.security.util.Password;
 
public class Lab
{
    public static List<Integer> list = new ArrayList<Integer>();
 
    public static void enterList() //функция для ввода списка
    {
        Random random = new Random(System.currentTimeMillis());
 
        for(int i = 0; i < 100; i++)
        {
            int number = -100 + random.nextInt(101 + 100);
            list.add(number);
        }
    }
 
    public static void printList() //функция для вывода списка
    {
        for(int i = 0; i < list.size(); i++)
        {
            System.out.print(list.get(i) + " ");
        }
    }
 
    public static void main(String[] args)
    {
        enterList();
        printList();
 
        int i = 0;
        int res = 0;
        while(i < list.size() - res)
        {
            if(list.get(i) < 0)
            {
                list.add(list.get(i));
                list.remove(list.get(i));
                res++;
            }
            else
                i++;
        }
 
        printList();
 
        System.out.println();
    }
}
Тема актуальна вплоть до субботы

Добавлено через 7 минут
Среда разработки-IntelliJ IDEA Community Edition 2018.2.4 x64.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.12.2018, 14:49
Ответы с готовыми решениями:

Java Swing. Перенести код с JavaFX "Не используя вспомогательных объектов."
Всем привет! В общем, в вузе дали последнее семестровое задание в переносе своей предыдущей ЛР из...

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

Отображаются кракозябры вместо заголовока формы JavaFX
Привет. Такая проблема. У меня есть две Scene и при нажатии на кнопку на одной из них Stage меняет...

Разработка на Java, JavaFX
Создать MVC-приложение которое позволяет по нажатию кнопки “Нарисовать” - отрисовало примитив....

8
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
14.12.2018, 21:05  [ТС] 2
Тема умерла и рассыпалась ржавым металлом , уже слишком поздно.
0
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
15.12.2018, 13:45  [ТС] 3
Тема вновь актуальна до неопределенного времени, мне еще нужна помощь об обертывании кода программы на Java в графический интерфейс Java FX, с двумя HorizontalListView и двумя Button (функции этих элементов выше).
0
13 / 9 / 10
Регистрация: 03.06.2016
Сообщений: 50
18.12.2018, 00:07 4
Лучший ответ Сообщение было отмечено Jim Reinor как решение

Решение

Ну как то так....
Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Orientation;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ListView;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
 
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
 
public class Main extends Application {
 
    @Override
    public void start(Stage window) throws Exception {
        window.setTitle("JavaFX");
        VBox root = new VBox();
 
        Button StartGenerate = new Button("Сгенерировать");
        Button Calculate = new Button("Расчет");
 
 
        ListView<List> SourceList = new ListView();
        ListView<List> ListCalculatedValues = new ListView();
        SourceList.setOrientation(Orientation.HORIZONTAL);
        ListCalculatedValues.setOrientation(Orientation.HORIZONTAL);
 
        root.getChildren().addAll(SourceList,ListCalculatedValues,StartGenerate,Calculate);
 
        StartGenerate.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                SourceList.getItems().addAll(enterList());
            }
        });
 
        Calculate.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                ListCalculatedValues.getItems().addAll(printList());
            }
        });
 
 
        window.setScene(new Scene(root, 300, 275));
        window.show();
    }
 
    public static void main(String[] args) {
        launch(args);
    }
 
    public static List<Integer> list = new ArrayList<Integer>();
 
    public static List<Integer> enterList() //функция для ввода списка
    {
        Random random = new Random(System.currentTimeMillis());
 
        for(int i = 0; i < 100; i++)
        {
            int number = -100 + random.nextInt(101 + 100);
            list.add(number);
        }
        return list;
    }
 
    public static List<Integer> printList() //функция для вывода списка
    {
        int i = 0;
        int res = 0;
        while(i < list.size() - res)
        {
            if(list.get(i) < 0)
            {
                list.add(list.get(i));
                list.remove(list.get(i));
                res++;
            }
            else
                i++;
        }
        return list;
    }
}
1
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
18.12.2018, 06:16  [ТС] 5
Благодарю. Но как перестроить элементы формы в такой вид по требованию? Через Scene Builder открывает старый вариант формы. Нужно переставить эти элементы, как на старом варианте:
JavaFX. Самое первое задание в JavaFX вместо Java. Не используя вспомогательных объектов
0
13 / 9 / 10
Регистрация: 03.06.2016
Сообщений: 50
18.12.2018, 08:53 6
Jim Reinor, вместо VBox воспользуйся как у тебя на скриншоте GridPane
0
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
18.12.2018, 15:19  [ТС] 7
Psyh, днем на парах я снова понял, что неправильно делал интерфейс, теперь вопрос в другом-как сделать две кнопки Сгенерировать и Расчет одинаковыми по ширине?

Добавлено через 46 минут
интерфейс в данном коде сделан правильно, только кнопки бы сделать одинаковыми
0
13 / 9 / 10
Регистрация: 03.06.2016
Сообщений: 50
18.12.2018, 23:18 8
Лучший ответ Сообщение было отмечено Jim Reinor как решение

Решение

Jim Reinor, добавь в public void start
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
        Double minHeight = 30.0;
        Double minWidth = 120.0;
        
        StartGenerate.setMinHeight(minHeight);
        StartGenerate.setMinWidth(minWidth);
 
        Calculate.setMinHeight(minHeight);
        Calculate.setMinWidth(minWidth);
1
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
19.12.2018, 22:32  [ТС] 9
Psyh, большое спасибо! Помогло!!! Искренне благодарю!!!
0
19.12.2018, 22:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.12.2018, 22:32
Помогаю со студенческими работами здесь

Как связать JavaFX и Java?
Здравствуйте! Заранее извиняюсь за свою &quot;зелёность&quot; в этом вопросе. Подскажите пожалуйста,...

Анимация - Java GUI & JavaFX
Есть такой код, который нужно модернизировать и сделать так, чтобы два шарика отталкивались друг от...

Сохранение данных. JavaFx. полный код внутри. Сохранять координаты объектов
Хочу сделать приложение аналогичное МайндМап приложениям, с немного другим функционалом. Проблема...

С использованием JavaFX необходимо создать Java приложение
Приложение реализующее добавление, редактирование и удаление данных .Предусмотреть возможность...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru