ともさんのHP >プロブラミング >JavaFX >ボタンやラベルの修飾方法

JavaFXボタンやラベルの修飾方法

ボタンやラベルの背景色を変えたり、4隅の角を丸くしたりするサンプルプログラムです。

広告


サイズの変更

幅はsetPrefWidth()、高さはsetPrefHeight()で指定する。

  Button b1 = new Button("ボタン楽天 ");
  b1.setPrefWidth(50);
  b1.setPrefHeight(50);
  pane.getChildren().add(b1);
  
  Label l1 = new Label( "ラベル" );
  l1.setPrefWidth(150);
  l1.setPrefHeight(26);
  pane.getChildren().add(l1);

JavaFXコントロールの大きさ設定


背景色、4隅の角R、内側オフセットを設定する

背景の色を設定するには、setBackground()で背景色を設定する。

  Button b2 = new Button("ボタン");
   b2.setBackground(new Background(new BackgroundFill( Color.WHITE , CornerRadii.EMPTY , Insets.EMPTY )));
  pane.getChildren().add(b2);

new BackgroundFillの2番目のパラメーターを設定することで4隅の角を丸くすることができる。

  Label l2 = new Label( "ラベル" );
  l2.setBackground(new Background(new BackgroundFill( Color.RED , new CornerRadii(5) , Insets.EMPTY )));
  pane.getChildren().add(l2);

3番目のパラメーターは、内側へのオフセット。数値をセットするとその分だけ小さくなる。

  TextField t1 = new TextField("テキスト1");
  t1.setBackground(new Background(new BackgroundFill( Color.AQUAMARINE , new CornerRadii(5) , Insets.EMPTY  )));
  pane.getChildren().add(t1);
  TextField t2 = new TextField("テキスト2");
  t2.setBackground(new Background(new BackgroundFill( Color.BLUEVIOLET , new CornerRadii(10) , new Insets(5) )));
  pane.getChildren().add(t2);

JavaFX背景の設定


文字の大きさ、色、フォントの変更

実時の大きさはsetFont()で設定する。色はsetTextFill()。
フォントはsetFont()へ入れるFontに設定すればよいが、日本語の見栄えが変わるフォントはあまりないみたい。

  Button b3 = new Button("Button");
  b3.setFont( new Font(20));
  b3.setTextFill(Color.RED);
  pane.getChildren().add(b3);

  Label l3 = new Label( "Label" );
  l3.setFont( Font.font("Impact",30) );
  l3.setTextFill(Color.AQUA);
  pane.getChildren().add(l3);

JavaFX文字の大きさと色の変更


境界線を設定

Borderを設定し、コントロールにセットすることで境界線をつけることができる。線の代わりに画像をつけることも可能。

  Label l4 = new Label( "ラベル" );
  Border border = new Border(new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, CornerRadii.EMPTY, BorderWidths.DEFAULT));
  l4.setBorder( border );
  pane.getChildren().add(l4);
  Label l5 = new Label( "ラベル" );
  Border border2 = new Border(new BorderStroke(Color.RED, BorderStrokeStyle.DASHED, CornerRadii.EMPTY, BorderWidths.DEFAULT));
  l5.setBorder( border2 );
  pane.getChildren().add(l5);

JavaFXラベルの境界線を設定


タイトルを設定

JavaSwingであれば下記のようにコントロールにタイトルを設定することが可能。
JavaSwingラベルのタイトルを設定

package tomojavalib.swingfx;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import javax.swing.Jbutton;
import javax.swing.Jframe;
import javax.swing.Jpanel;
import javax.swing.border.LineBorder;
import javax.swing.border.TitledBorder;

public class ControlTestSwing extends Jframe {
//ファイルの状態フラグ
boolean file = false;

/*コンストラクタ*/
public ControlTestSwing()
{
 //サイズ設定
 this.setBounds(500, 500, 320, 240);
 Jpanel pane = new Jpanel();
 add(pane);
//タイトル付きボタンの設定
TitledBorder border = new TitledBorder(new LineBorder(Color.DARK_GRAY, 0),"注記表示", TitledBorder.LEFT, TitledBorder.TOP);
border.setTitleFont(new Font("MS ゴシック", Font.PLAIN,10));
Jbutton menubutton = new Jbutton( "表示します" );
menubutton.setPreferredSize(new Dimension(100,40));
pane.add(menubutton);
menubutton.setBorder(border);
}

public static void main(String[] args) {
 ControlTestSwing cts = new ControlTestSwing();
 cts.setVisible(true);
}
}

Java 楽天 FXでは同じことはできないので自作することになる。
JavaFXタイトル付きコントロール

まずはコントロールclass

package tomojavalib.p2cad.mainstage;

import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.Tooltip;
import javafx.scene.layout.Background;
import javafx.scene.layout.BackgroundFill;
import javafx.scene.layout.CornerRadii;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;

/**タイトル付きのボタンやラベルを作成する*/
public class TitleItem extends StackPane{
public Button button = null;
public Label label = null;
Label title =null;
public boolean b;


/***
 * コンストラクタ
 * @param button trueならボタン、falseならラベル
 * @param title タイトル
 * @param w 幅
 * @param h 高さ
 * @param text ボタンまたはラベルに表示するテキスト
 */
public TitleItem( boolean b , String title , double w ,double h,String text){
 super();

 this.title = new Label();
 this.b = b;
 if(b){
  button  = new Button();
  this.getChildren().add( button );
 }else{
  label = new Label();
  this.getChildren().add(label);
  label.setBackground(new Background(new BackgroundFill( Color.WHITE , CornerRadii.EMPTY , Insets.EMPTY )));
 }
this.setTitle(title);
this.setSize(w, h);
this.setText(text);
StackPane.setAlignment( this.title , Pos.TOP_LEFT );
StackPane.setMargin( this.title , new Insets(0) );
this.getChildren().add( this.title );

}



public void setTitle( String title ){
 this.title.setText( title );
 this.title.setFont( new Font(8) );
}

public void setText( String text ){
 if(b){
  button.setText(text);
 }else{
  label.setText(text);
 }
}


public void setSize( double w , double h ){
 this.setWidth(w);
 this.setHeight(h);
 if(b){
  button.setPrefHeight(h);
  button.setPrefWidth(w);
 }else{
  label.setPrefHeight(h);
  label.setPrefWidth(w);
 }
}

public void setToolTipText( String s ){
 if(b){
  button.setTooltip(new Tooltip(s));
 }else{
  label.setTooltip(new Tooltip(s));
 }
}

public boolean isEnabled(){
 if(b){
  return button.isDisabled();
 }else{
  return label.isDisabled();
 }
}

public void setEnabled( boolean c ){
 if(b){
  button.setDisable( c );
 }else{
  label.setDisable( c );
 }
}


このclassを使うには下記のように記述する。

  TitleItem b = new TitleItem( true , "test", 50, 30,"テスト");
  pane.getChildren().add(b);
  TitleItem l = new TitleItem( false , "test", 50, 30,"テスト");
  l.setSize(200, 30);
  pane.getChildren().add(l);

広告


最終更新日: 2017-11-04 11:27:12

ともさんのHP >プロブラミング >JavaFX >ボタンやラベルの修飾方法

このエントリーをはてなブックマークに追加
広告
おすすめ記事
新着ページ

JavaFXでPopupMenu  
メンズパンツとジーンズの型紙ダウンロード  
柿の木、剪定前後の比較写真  
ダイアログ  
メニューバー  
原型型紙のダウンロード  
3D-CADでカバンの型紙  
和風コートの作り方  
アイコンの差し替え  
男性用原型製図のしかた  
今年も柿の剪定が終了  

私の他のサイト

ともさんの箱庭(ブログ)
家庭菜園
3D-CAD
洋裁CAD

いいねなど

 RSS 
PageSpeedInsights
html5チェック

Author: Tomoyuki Ito

このサイトの文章・写真の無断転載を禁じます