HOWTO · Java

JavaFX スクエアボタン

このチュートリアルでは、JavaFX で正方形のボタンを作成する方法について説明します。

このページの内容

四角いボタンは、Java で ToolBar クラスを拡張することで作成できます。このチュートリアルでは、JavaFX で正方形のボタンを作成する方法を示します。

JavaFX で正方形のボタンを作成する

ボタンは、JavaFX で Button クラスをインスタンス化することによって作成されます。ボタンは、JavaFX でいくつかのアクティビティを実行するために使用されます。

これは、JavaFX.scene.control.Button クラスで表されます。ボタンには、テキストまたはアイコンを付けることができます。

四角いボタンを作成するには、ボタンのサイズを設定する必要があります。次の関数は、JavaFX のボタンのサイズを操作するために使用されます。

機能:

button.setMinWidth() button.setMaxWidth() button
    .setPrefWidth()

        button.setMinHeight() button.setMaxHeight() button
    .setPrefHeight()

        button.setMinSize() button.setMaxSize() button.setPrefSize()

上記の方法を使用して、ボタンのサイズを設定して正方形にすることができます。以下の手順に従って、JavaFX で正方形のボタンを作成します。

  • まず、Application クラスを拡張してクラスを作成します。
  • start() メソッドを実装します。
  • クラス Button をインスタンス化してボタンを作成します。
  • ToolBar クラスを拡張する別のクラスを作成します。このクラスには、メソッド layoutChildren() があります。
  • layoutChildren() メソッドはボタンのサイズを指定します。setPrefWidth()setPrefHeight() を同じ値で使用して、正方形のボタンを作成できます。
  • ToolBar クラスを継承するクラスのオブジェクトを作成し、クラスをインスタンス化してボタンを渡します。
  • BorderPane クラスをインスタンス化し、ToolBar クラスの上記のオブジェクトを渡すことにより、境界ペインを作成します。
  • シーンオブジェクトを作成し、シーンクラスをインスタンス化して、BorderPane オブジェクトをシーンに渡します。
  • setScene() メソッドを使用して、シーンをステージに追加します。
  • show() メソッドを使用してステージを表示します。
  • 最後に、アプリケーションを起動します。

完全なソースコード:

package delftstack;

import javafx.application.Application;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ToolBar;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class JavaFX_Square_Button extends Application {
  @Override
  public void start(Stage Demo_Stage) {
    Button Button1 = new Button("One");
    Button Button2 = new Button("Two Two");
    Button Button3 = new Button("Three Three Three");

    Square_Button_ToolBar Tool_Bar = new Square_Button_ToolBar();
    Tool_Bar.getItems().addAll(Button1, Button2, Button3);

    BorderPane Border_Pane = new BorderPane();
    Border_Pane.setTop(Tool_Bar);

    Scene Demo_Scene = new Scene(Border_Pane, 500, 500);
    Demo_Stage.setScene(Demo_Scene);
    Demo_Stage.show();

    Tool_Bar.requestLayout();
  }

  // A derivative of the ToolBar class to resize all buttons of the same size and square.
  class Square_Button_ToolBar extends ToolBar {
    @Override
    protected void layoutChildren() {
      double Min_Pref_Size = Calculate_Pref_Child_Size();
      for (Node x : getItems()) {
        if (x instanceof Button) {
          ((Button) x).setPrefWidth(Min_Pref_Size);
          ((Button) x).setPrefHeight(Min_Pref_Size);
        }
      }
      super.layoutChildren();
    }
    private double Calculate_Pref_Child_Size() {
      double Min_Pref_Size = 0.0d;
      for (Node x : getItems()) {
        if (x instanceof Button) {
          Min_Pref_Size = Math.max(Min_Pref_Size, x.prefWidth(-1));
        }
      }
      return Min_Pref_Size;
    }
  }
  public static void main(String[] args) {
    launch(args);
  }
}

上記のコードは、テキストが収まるサイズの正方形のボタンを作成します。

出力:

JavaFX スクエアボタン