ComboBox,CoiceBoxのサンプルプログラム
JavaFXのコントロール、ComboBoxとChoiceBoxを利用するシンプルなサンプルプログラムです。
コンボボックス、チョイスボックスの機能
あらかじめ登録しておいたリストから、一つの値を選択するコントロールです。
両者はよく似ていますが、ComboBoxはsetEditable()メソッドでtrueをセットすれば、登録した値以外にキー入力した値を設定できます。
サンプルプログラムの説明
JavaFX楽天 で新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