ともさんのHP >プロブラミング >JavaFX >コンボボックス、チョイスボックス

ComboBox,CoiceBoxのサンプルプログラム

JavaFXのコントロール、ComboBoxとChoiceBoxを利用するシンプルなサンプルプログラムです。
サンプルプログラム

広告


コンボボックス、チョイスボックスの機能

あらかじめ登録しておいたリストから、一つの値を選択するコントロールです。
両者はよく似ていますが、ComboBoxはsetEditable()メソッドでtrueをセットすれば、登録した値以外にキー入力した値を設定できます。

サンプルプログラムの説明

Java 楽天 FXで新Stageを作り、コンボボックスcomboとチョイスボックスchoice、それからラベルを配置します。
コンボボックス、チョイスボックスにはそれぞれ選択するためのリストを設定して初期化。

  combo = new ComboBox<String>( FXCollections.observableArrayList( "いちご" , "ニンジン" , "サクランボ" ) );

  choice = new ChoiceBox<String>( FXCollections.observableArrayList( "a" , "b" , "c" , "d" ));

コンボボックスはキー入力できるように設定します。

  combo.setEditable( true );

デフォルトの初期値は入っていませんが、setValue()メソッドで設定できます。ただし、リストに入っていないとダメです。

  combo.setValue("いちご");
  choice.setValue("a");


イベント処理

setEvent()メソッド中で設定しています。ActionEventを拾い、それぞれ指定の処理メソッドを実行します。

private void setEvent(){
EventHandler<ActionEvent> choiceBoxChanged = ( event ) -> this.choiceBoxChanged( event );
choice.addEventHandler( ActionEvent.ACTION , choiceBoxChanged );
EventHandler<ActionEvent> comboBoxChanged = ( event ) -> this.comboBoxChanged( event );
combo.addEventHandler( ActionEvent.ACTION , comboBoxChanged );
}

イベント処理メソッドでは、ActionEventからイベントを呼んだコントロールを得て、

 ChoiceBox c = (ChoiceBox)e.getSource();

このコントロールの選択した値を得て、ラベルに表示させてます。

 label.setText( (String)c.getValue() );


サンプルプログラムのコード

上の動画のソースコードは下記の通り。

package tomojavalib.fx;

import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.*;
import javafx.stage.Stage;

public class ComboBoxTest extends Application {
ChoiceBox<String> choice;
ComboBox<String> combo;
Label label;

 public static void main(String[] args) {
  Application.launch(args);
 }
 
 @Override
 public void start(Stage stage) throws Exception {
  Vbox pane = new Vbox();
  combo = new ComboBox<String>( FXCollections.observableArrayList( "いちご" , "ニンジン" , "サクランボ" ) );
  combo.setEditable( true );
  combo.setValue("いちご");
  choice = new ChoiceBox<String>( FXCollections.observableArrayList( "a" , "b" , "c" , "d" ));
  choice.setValue("a");

  label = new Label();
  
  pane.getChildren().addAll( combo ,choice,label);
  Scene scene = new Scene(pane, 320, 240);
  stage.setScene(scene);
  stage.show();
  this.setEvent();
 }

private void setEvent(){
EventHandler<ActionEvent> choiceBoxChanged = ( event ) -> this.choiceBoxChanged( event );
choice.addEventHandler( ActionEvent.ACTION , choiceBoxChanged );
EventHandler<ActionEvent> comboBoxChanged = ( event ) -> this.comboBoxChanged( event );
combo.addEventHandler( ActionEvent.ACTION , comboBoxChanged );
}

private void choiceBoxChanged( ActionEvent e ){
 ChoiceBox c = (ChoiceBox)e.getSource();
 System.out.println( "選択"+(String)c.getValue() ) ;
 label.setText( (String)c.getValue() );
}

private void comboBoxChanged( ActionEvent e ){
 ComboBox c = (ComboBox)e.getSource();
 System.out.println( "選択"+(String)c.getValue() ) ;
 label.setText( (String)c.getValue() );
}

}

最終更新日: 2017-07-11 14:26:54

ともさんのHP >プロブラミング >JavaFX >コンボボックス、チョイスボックス

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

蟻の飼いかた  
ヒマワリの栽培、手入れ、増やしかた  
日本・西洋ミツバチの同居  
自家栽培ソバで蕎麦打ち  
机の脚兼パソコン収納を自作  
skepの作り方の本を買った  
休耕田で家庭菜園  
【Java】JPG画像変換クラス  
煙突掃除のしかた(五右衛門風呂)  
大麦を収穫して麦茶にしました  
コスモスの栽培、手入れ、増やしかた  

私の他のサイト

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

いいねなど

 RSS 
PageSpeedInsights
html5チェック

Author: Tomoyuki Ito

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