Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / рисование на JavaFX / 16 сообщений из 16, страница 1 из 1
11.11.2016, 11:53
    #39345462
Музаффар
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
рисование на JavaFX
Привет всем!
в javaFX я новичок тем более изучаю эту технологию на IDEA IntelliJ (тоже новая среда для меня :)...)

создал новый проект (создались 2 класса и fxml документ), с помощью scene builder добавил всякие элементы пробовал обработчики вещать на кнопки и т.д. и как я понял обработчики т.е. методы для обработки пишутся в классе Контроллер... грубо говоря понял как писать калькулятор

собственно вопрос:
счась хочется нарисовать обычную линию после нажатия кнопки... но вот как?, не совсем понимаю
прошу помочь в этом деле
рисуется в классе Контроллер? если можно маленький пример...

счась возможно появится мемберы которые просят показать написанный мною код.... проблем в том что кода нет был бы не спрашивал бы (и прошу прошение за преждевременный троллинг :))

З.Ы. спасибо за помощь!
...
Рейтинг: 0 / 0
11.11.2016, 11:58
    #39345468
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
рисование на JavaFX
Музаффар,

Это уже прочитано?
http://docs.oracle.com/javafx/2/canvas/jfxpub-canvas.htm
...
Рейтинг: 0 / 0
11.11.2016, 12:08
    #39345481
Музаффар
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
рисование на JavaFX
Blazkowicz,

читать то читал (хотя не полностью) вот только появились несколько вопросов... у меня есть несколько классов скажем Main и Controller... как я понял обработчики пишутся с Контроллере а вот рисуются где? прямо в теле этого обработчика или лучше вывести на другой класс или же в классе Мэйн?
...
Рейтинг: 0 / 0
11.11.2016, 12:27
    #39345493
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
рисование на JavaFX
Музаффару меня есть несколько классов скажем Main и Controller... как я понял обработчики пишутся с Контроллере а вот рисуются где? прямо в теле этого обработчика или лучше вывести на другой класс или же в классе Мэйн?
Где рисуются обработчики?
Вопрос архитектурный? Всё же зависит от того что именно вы там пишете.
...
Рейтинг: 0 / 0
11.11.2016, 12:29
    #39345496
Музаффар
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
рисование на JavaFX
вот что у меня счас имеется:

Main
Код: 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.
package sample;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception{
        Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
        primaryStage.setTitle("Test");
        primaryStage.setScene(new Scene(root));
        primaryStage.getScene().getStylesheets().add("css/style.css");
        primaryStage.show();
    }


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



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.
package sample;

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.Group;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.control.ToggleButton;
import javafx.scene.paint.Color;
import javafx.scene.shape.ArcType;

public class Controller {
    private static String _tipG;
    @FXML
    private ToggleButton tipG;

    @FXML
    private Canvas canvasRegion;

    @FXML
    public void onCalc(ActionEvent actionEvent) {
        if (tipG.isSelected()) {
            System.out.println("Глинистый");
            _tipG="G";
        } else {
            System.out.println("Барханный");
            _tipG="P";
        }
        System.out.println(_tipG);
    }

    @FXML
    public void onSwitchTipG(ActionEvent actionEvent) {
        if (tipG.isSelected()) {
            System.out.println("Глинистый");
            tipG.setText("Глинистый");
            _tipG="G";
        } else {
            System.out.println("Барханный");
            tipG.setText("Барханный");
            _tipG="P";
        }
        System.out.println(_tipG);
    }
}



и Sample.fxml
Код: xml
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.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.shape.*?>
<?import javafx.scene.text.*?>
<?import javafx.geometry.*?>
<?import javafx.scene.canvas.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>

<TabPane prefHeight="600.0" prefWidth="800.0" tabClosingPolicy="UNAVAILABLE" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller">
    <tabs>
        <Tab text="Исходные данные">
            <content>
                <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0">
                    <children>
                        <Button fx:id="calc" defaultButton="true" mnemonicParsing="false" onAction="#onCalc" prefHeight="25.0" prefWidth="100.0" text="Расчет" AnchorPane.bottomAnchor="5.0" AnchorPane.rightAnchor="5.0" />
                        <Label layoutX="69.0" layoutY="14.0" styleClass="text" text="Геометрические характеристики">
                            <font>
                                <Font name="System Bold" size="13.0" />
                            </font>
                        </Label>
                        <Label layoutX="13.0" layoutY="40.0" styleClass="text" text="Ширина основной площадки (b_pl)">
                            <font>
                                <Font size="13.0" />
                            </font></Label>
                        <TextField fx:id="b_pl" alignment="CENTER_RIGHT" layoutX="232.0" layoutY="37.0" prefHeight="25.0" prefWidth="120.0" />
                        <Label layoutX="13.0" layoutY="73.0" styleClass="text" text="Высота насыпи (h_nas)">
                            <font>
                                <Font size="13.0" />
                            </font></Label>
                        <TextField fx:id="h_nas" alignment="CENTER_RIGHT" layoutX="232.0" layoutY="70.0" prefHeight="25.0" prefWidth="120.0" />
                        <Label layoutX="13.0" layoutY="106.0" styleClass="text" text="Толщина балласта (h_b)">
                            <font>
                                <Font size="13.0" />
                            </font></Label>
                        <TextField fx:id="h_b" alignment="CENTER_RIGHT" layoutX="231.0" layoutY="103.0" prefHeight="25.0" prefWidth="120.0" />
                        <Label layoutX="14.0" layoutY="141.0" styleClass="text" text="Длина шпалы (l_sh)">
                            <font>
                                <Font size="13.0" />
                            </font>
                        </Label>
                        <TextField fx:id="l_sh" alignment="CENTER_RIGHT" layoutX="231.0" layoutY="138.0" prefWidth="120.0" text="2,7" />
                        <TextField fx:id="m" alignment="CENTER_RIGHT" layoutX="232.0" layoutY="170.0" prefWidth="120.0" text="1" />
                        <Label layoutX="13.0" layoutY="173.0" styleClass="text" text="Уклон откоса (1:m)">
                            <font>
                                <Font size="13.0" />
                            </font>
                        </Label>
                        <TextField alignment="CENTER_RIGHT" layoutX="665.0" layoutY="137.0" prefWidth="120.0" text="2,7" />
                        <TextField fx:id="gamma" alignment="CENTER_RIGHT" layoutX="666.0" layoutY="36.0" prefWidth="120.0" />
                        <Label layoutX="495.0" layoutY="14.0" styleClass="text" text="Физические характеристики">
                            <font>
                                <Font name="System Bold" size="13.0" />
                            </font>
                        </Label>
                        <Label layoutX="420.0" layoutY="72.0" styleClass="text" text="Удельное сцепление (Cst)">
                            <font>
                                <Font size="13.0" />
                            </font>
                        </Label>
                        <TextField fx:id="Cst" alignment="CENTER_RIGHT" layoutX="666.0" layoutY="69.0" prefWidth="120.0" />
                        <Label layoutX="420.0" layoutY="172.0" styleClass="text" text="Коэф. отн. сниж. угла внутр. трения (Kfi)">
                            <font>
                                <Font size="13.0" />
                            </font>
                        </Label>
                        <Label layoutX="420.0" layoutY="39.0" styleClass="text" text="Объемный вес грунта (gamma)">
                            <font>
                                <Font size="13.0" />
                            </font>
                        </Label>
                        <TextField fx:id="Fist" alignment="CENTER_RIGHT" layoutX="665.0" layoutY="102.0" prefWidth="120.0" />
                        <TextField alignment="CENTER_RIGHT" layoutX="666.0" layoutY="169.0" prefWidth="120.0" text="1" />
                        <Label layoutX="420.0" layoutY="105.0" styleClass="text" text="Угол внутренного трения (Fist)">
                            <font>
                                <Font size="13.0" />
                            </font>
                        </Label>
                        <Label layoutX="421.0" layoutY="140.0" prefHeight="19.0" prefWidth="189.0" styleClass="text" text="Коэф. отн. сниж. сцепления (Kc)">
                            <font>
                                <Font size="13.0" />
                            </font>
                        </Label>
                        <Separator layoutX="383.0" layoutY="6.0" orientation="VERTICAL" prefHeight="190.0" prefWidth="12.0" />
                  <ToggleButton fx:id="tipG" layoutX="232.0" layoutY="209.0" mnemonicParsing="false" onAction="#onSwitchTipG" prefHeight="25.0" prefWidth="120.0" text="Барханный" />
                  <Label layoutX="13.0" layoutY="213.0" text="Тип грунта" />
                    </children>
                </AnchorPane>
            </content>
        </Tab>
        <Tab text="Отчет">
            <content>
                <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0">
                    <children>
                        <Label layoutX="222.0" layoutY="93.0" text="Label" />
                    </children></AnchorPane>
            </content>
        </Tab>
        <Tab text="График">
            <content>
                <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0">
               <children>
                  <Canvas fx:id="canvasRegion" height="367.0" layoutX="8.0" layoutY="8.0" width="611.0" />
               </children></AnchorPane>
            </content>
        </Tab>
        <Tab text="Инфо">
            <content>
                <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0">
                    <children>
                        <Label layoutX="384.0" layoutY="90.0" text="Инфо" />
                    </children>
                </AnchorPane>
            </content>
        </Tab>
    </tabs>
</TabPane>



вот при нажатии кнопки должен рисовать в
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
<Tab text="График">
            <content>
                <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0">
               <children>
                  <Canvas fx:id="canvasRegion" height="367.0" layoutX="8.0" layoutY="8.0" width="611.0" />
               </children></AnchorPane>
            </content>
        </Tab>



график...
...
Рейтинг: 0 / 0
11.11.2016, 12:32
    #39345501
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
рисование на JavaFX
Музаффар... как я понял обработчики пишутся с Контроллере а вот рисуются где? прямо в теле этого обработчика или лучше вывести на другой класс или же в классе Мэйн?
Рисуются в графическом контексте. А где это делать решать вам.
Обычно в графических приложениях есть отдельная процедура/функция - Render(), где осуществляется перерисовка контента.
Эта функция как правило вызывается таймером, часто бывает асинхронная.
Таким образом вы только подготавливаете информацию о том, что нужно рисовать... И все!
Render() сам все периодически перерисовывает.
...
Рейтинг: 0 / 0
11.11.2016, 12:33
    #39345502
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
рисование на JavaFX
...
Рейтинг: 0 / 0
11.11.2016, 13:07
    #39345536
Музаффар
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
рисование на JavaFX
SQL2008,
да вот я не совсем понимаю как вставить именно туда куда надо...

Blazkowicz,
вряд ли буду использовать в этом проекте чарты, хотя должен рисовать график хотя должен показать давления на поверхность...
...
Рейтинг: 0 / 0
11.11.2016, 13:12
    #39345541
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
рисование на JavaFX
Музаффарда вот я не совсем понимаю как вставить именно туда куда надо...
дак вставьте же куда нибудь )))) LOL
1. Класс MyLine в отдельном файле с методом Draw()
2. В контроллере на клик мышкой вызвать Draw()
- делайте
...
Рейтинг: 0 / 0
11.11.2016, 13:16
    #39345543
Музаффар
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
рисование на JavaFX
Petro123Музаффарда вот я не совсем понимаю как вставить именно туда куда надо...
дак вставьте же куда нибудь )))) LOL

с улыбкой читаю Ваши ответы/комменты :)

куда нибудь не пойдет, мне нужно на указанном табе на указанном месте...

Petro1231. Класс MyLine в отдельном файле с методом Draw()
2. В контроллере на клик мышкой вызвать Draw()
- делайте
1 О.К.
2 тоже самое :)
...
Рейтинг: 0 / 0
11.11.2016, 13:29
    #39345562
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
рисование на JavaFX
Музаффар,
Музаффаркуда нибудь не пойдет, мне нужно на указанном табе на указанном месте...
FXML + там есть объект Canvas - перетащить куда надо на форму.
Потом контроллёре типа:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
 @FXML private Canvas img ;

    private GraphicsContext gc ;

    @FXML private void drawCanvas(ActionEvent event) {
        gc.setFill(Color.AQUA);
        gc.fillRect(10,10,100,100);
    }

    @Override
    public void initialize(URL location, ResourceBundle resources) {
        gc = img.getGraphicsContext2D();
        gc.setFill(Color.BLACK);
        System.out.println("color set to black");
        gc.fillRect(50, 50, 100, 100);
        System.out.println("draw rectangle");
    }
...
Рейтинг: 0 / 0
11.11.2016, 13:30
    #39345563
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
рисование на JavaFX
вторым этапом все строки убрать в отдельный класс. В контроллёре только вызов его одной строкой.
...
Рейтинг: 0 / 0
11.11.2016, 13:45
    #39345579
Музаффар
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
рисование на JavaFX
Petro123,

авторFXML + там есть объект Canvas - перетащить куда надо на форму.
это уже было сделано, походу не обратили внимание :) но все равно спс!

на счет кода особое Спасибо хоть немножко по другому сделал, точнее по ссылке Блазговича (тоже спасибо!) там всего надо было убрать несколько строк :)

авторвторым этапом все строки убрать в отдельный класс. В контроллёре только вызов его одной строкой.
хорошо
...
Рейтинг: 0 / 0
11.11.2016, 13:49
    #39345588
Музаффар
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
рисование на JavaFX
Оказывается можно же решит проблемы без всяких споров... :)
...
Рейтинг: 0 / 0
11.11.2016, 13:52
    #39345592
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
рисование на JavaFX
Музаффарпо ссылке Блазговича
ну и хорошо что есть много вариантов.
Там по ссылке более в динамике, а с FXML более декларативно. Мейнстрим счас).
...
Рейтинг: 0 / 0
11.11.2016, 13:53
    #39345594
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
рисование на JavaFX
OFF
МузаффарОказывается можно же решит проблемы без всяких споров... :)
спорят любители ОДНОГО варианта)
Удачи!
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / рисование на JavaFX / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]