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

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

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

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

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

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

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

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

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

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

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

Petro1231. Класс MyLine в отдельном файле с методом Draw()
2. В контроллере на клик мышкой вызвать Draw()
- делайте
1 О.К.
2 тоже самое :)
...
Рейтинг: 0 / 0
рисование на JavaFX
    #39345562
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар,
Музаффаркуда нибудь не пойдет, мне нужно на указанном табе на указанном месте...
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
рисование на JavaFX
    #39345563
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вторым этапом все строки убрать в отдельный класс. В контроллёре только вызов его одной строкой.
...
Рейтинг: 0 / 0
рисование на JavaFX
    #39345579
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

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

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

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


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