質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

2回答

573閲覧

button イベント 1つのボタンを押すたびに図形が増えていく

ann_0.6

総合スコア1

JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2022/09/06 04:13

前提

javafxで一日一回カウントしていく習慣化アプリをつくっています。
カウントボタンを押すたびに図形が表示する機能はどうかけばよいのでしょうか。

実現したいこと

①カウントボタンをおす
②一回押すたびに扇形の図形が下の円に沿って増えていく

発生している問題・エラーメッセージ

該当のソースコード

@Override public void Init() { //扇形 Arc arc=( Arc)(getPane().lookup("#Achievement_shape")); /* Arc arc = new Arc();*/ arc.setCenterX(0.0f); arc.setCenterY(0.0f); arc.setRadiusX(102.0f); arc.setRadiusY(102.0f); arc.setStartAngle(0.0f); arc.setLength(40.0f); arc.setType(ArcType.ROUND); //model SyuukanModel m = (SyuukanModel) getModel(); Label testLabel = (Label) getPane().lookup("#testLabel"); testLabel.setText(TopViewcontroller.targetString); Label enthusiasm_label = (Label) getPane().lookup("#enthusiasm_label"); enthusiasm_label.setText(TopViewcontroller.enthusiasmString); //カウントアップ Button Btn_count = (Button) getPane().lookup("#Btn_count"); Label counter = (Label) getPane().lookup("#counter"); Btn_count.setOnAction(new EventHandler<ActionEvent>() { public void handle(ActionEvent args0) { counter.setText(String.valueOf(count++)); if(count==31) { count=1; num++; } } }); }

試したこと

ボタンのイベントの中に扇形を設定するコードをかいたのですが、反映されませんでした。

補足情報(FW/ツールのバージョンなど)

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jimbe

2022/09/06 04:31

コードをみた感じでは、 counter には setText してますから反映されるのではないでしょうか。 捕捉の画像でどこが counter か分かりませんが。
guest

回答2

0

ボタンのイベントの中に扇形を設定するコードをかいたのですが、反映されませんでした。

その内容を書いてくれないと、単に「うまくいきませんでした」というだけで何の情報もありません。
コードも変に省略せず実行可能な状態で提示してください(省略すべきは「記録する」ボタン等、質問に関係ない部分です)


ProgressIndicatorはどうでしょうか?
100%理想形ではないでしょうが、妥協できるなら非常に簡単に済みます(minHeightminWidthを入れると大きくできます)
19 進行状況バーと進行状況インジケータ(リリース8)

fxmlは使っているようですが、コントローラはないんでしょうかね?(ちょっとよくわからないんで、回答は通常の構成です)

Java

1package com.example.demo; 2 3import javafx.application.Application; 4import javafx.fxml.FXMLLoader; 5import javafx.scene.Scene; 6import javafx.stage.Stage; 7 8import java.io.IOException; 9 10public class HelloApplication extends Application { 11 public static void main(String[] args) { launch(); } 12 13 @Override public void start(Stage stage) throws IOException { 14 FXMLLoader fxmlLoader = new FXMLLoader(HelloApplication.class.getResource("hello-view.fxml")); 15 Scene scene = new Scene(fxmlLoader.load(), 600, 400); 16 stage.setScene(scene); 17 stage.show(); 18 } 19}

Java

1package com.example.demo; 2 3import javafx.fxml.FXML; 4import javafx.scene.control.ProgressIndicator; 5import javafx.scene.layout.Pane; 6import javafx.scene.paint.Color; 7import javafx.scene.shape.*; 8 9public class HelloController { 10 @FXML private Pane root; 11 @FXML private ProgressIndicator progressIndicator; 12 @FXML private Circle circle; 13 14 private int count; 15 16 @FXML protected void onButtonClick() { 17 Arc arc = new Arc(0, 0, circle.getRadius(), circle.getRadius(), 18 360.0 / 9 * count, 360.0 / 9); 19 arc.setLayoutX(circle.getLayoutX()); 20 arc.setLayoutY(circle.getLayoutY()); 21 arc.setType(ArcType.ROUND); 22 arc.setFill(Color.DODGERBLUE); 23 arc.setStroke(Color.BLACK); 24 root.getChildren().add(arc); 25 26 count++; 27 28 progressIndicator.setProgress(1.0 / 9 * count); 29 } 30}

xml

1<?xml version="1.0" encoding="UTF-8"?> 2 3<?import javafx.scene.control.Button?> 4<?import javafx.scene.control.ProgressIndicator?> 5<?import javafx.scene.layout.Pane?> 6<?import javafx.scene.shape.Circle?> 7 8<Pane fx:id="root" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.example.demo.HelloController"> 9 <ProgressIndicator fx:id="progressIndicator" layoutX="14.0" layoutY="14.0" minHeight="300.0" minWidth="300.0" progress="0.0" /> 10 <Button layoutX="279.0" layoutY="355.0" mnemonicParsing="false" onAction="#onButtonClick" text="Button" /> 11 <Circle fx:id="circle" fill="#cccccc" layoutX="456.0" layoutY="144.0" radius="130.0" stroke="BLACK" strokeType="INSIDE" /> 12</Pane>

33%
100%

投稿2022/09/06 11:24

編集2022/09/06 11:30
TN8001

総合スコア9321

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ボタンのイベントの中に扇形を設定するコードをかいたのですが、反映されませんでした。

「ボタンのイベントの中に扇形を設定するコードをかい」てみた。

java

1import javafx.application.Application; 2import javafx.scene.Scene; 3import javafx.scene.control.Button; 4import javafx.scene.control.Label; 5import javafx.scene.control.ScrollPane; 6import javafx.scene.layout.FlowPane; 7import javafx.scene.layout.VBox; 8import javafx.scene.paint.Color; 9import javafx.scene.shape.Arc; 10import javafx.scene.shape.Shape; 11import javafx.stage.Stage; 12 13import java.time.LocalTime; 14 15public class xxArc { 16 public static void main(final String[] args) throws Exception { 17 Application.launch(App.class, args); 18 } 19 20 public static class App 21 extends Application { 22 @Override 23 public void start(final Stage stage) throws Exception { 24 final FlowPane pane = new FlowPane(); 25 final Button button = new Button("Add shape"); 26 27 button.setOnAction(ev -> { 28 final Shape shape = new Arc(Math.random() * 100, Math.random() * 100, Math.random() * 100, 29 Math.random() * 100, Math.random() * 360, Math.random() * 360); 30 shape.setFill(new Color(Math.random(), Math.random(), Math.random(), Math.random())); 31 pane.getChildren().add(0, shape); 32 pane.getChildren().add(0, new Label(LocalTime.now().toString())); 33 }); 34 35 stage.setScene(new Scene(new VBox(button, new ScrollPane(pane)))); 36 stage.setWidth(600); 37 stage.setHeight(600); 38 stage.show(); 39 } 40 } 41}

作った図形はしかるべき場所にadd()しないと。

投稿2022/09/06 05:34

shiketa

総合スコア3971

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問