JavaFX-ListViewの使いかた
JavaFXでListView(リストビュー)を使うサンプルプログラムを紹介します。
ListViewは下の動画のようなリストを表示して、マウスでクリックすると選択できる機能があります。行が多いと、自動的にスクロールバーが追加されます。
設定方法
表示するアイテムをString配列で作り、ObservableListにします。
これをListViewにセットします。
ListView<String> list = new ListView<>();
//アイテムに入れる文字列を用意する
String[] s = new String[]{ "A4横" , "A4縦" , "A3横" , "A3縦" };
ObservableList<String>lm = FXCollections.observableArrayList( s );
//アイテムをセット
list.setItems( lm );
1行で済ませるとこんな感じ。
ListView<String> list = new ListView<>(FXCollections.observableArrayList( "A4横" , "A4縦" , "A3横" , "A3縦" ));
イベントの設定
マウスでリスト上のアイテムを選択した場合の対応
ListViewにイベントを設定
list.setOnMouseClicked((MouseEvent event )->{ listClicked( event );});
イベント発生時の処理
下の例では選択したアイテムの文字をTextに表示させています。
private void listClicked(MouseEvent e){
ListView<String> l = (ListView)e.getSource();
String s = (String)l.getSelectionModel().getSelectedItem();
if( s==null ){ return; }
System.out.println( s );
text.setText( s );
return;
}
リストの入れ替え
リストを入れ替えたい場合は、まずリストのアイテムを消去し、そのあと新たなアイテムをセットします。
消去せずにセットすると、既存のアイテムの下に追加されます。
String[] s = new String[]{ "A0横" , "A0縦" , "A1横" , "A1縦" };
ObservableList<String>lm = FXCollections.observableArrayList( s );
//既存のアイテムをクリアする
list.getItems().clear();
//新たなアイテムをセット
list.setItems( lm );
サンプルプログラム
ページトップの動画のソースは以下の通り
package tomojavalib.swingfx;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ListView;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.*;
import javafx.scene.text.Text;
import javafx.stage.Stage;
public class ListViewTestFx extends Application {
Text text = null;
ListView<String> list = new ListView<>();
public static void main(String[] args) {
Application.launch(args);
}
@Override
public void start(Stage stage) throws Exception {
stage.setTitle("JavaFX楽天 ");
VBox pane = new VBox();
Scene scene = new Scene(pane, 320, 240);
text= new Text("");
pane.getChildren().add(text);
//アイテムに入れる文字列を用意する
String[] s = new String[]{ "A4横" , "A4縦" , "A3横" , "A3縦" , "A5横" , "A5縦" , "A2横" , "A2縦" , "A1横" , "A1縦" , "A0横" , "A0縦" };
ObservableList<String>lm = FXCollections.observableArrayList( s );
//アイテムをセット
list.setItems( lm );
//サイズ設定
list.setPrefSize(200, 100);
//イベント設定
list.setOnMouseClicked((MouseEvent event )->{ listClicked( event );});
pane.getChildren().add(list);
Button button = new Button("リスト入れ替え");
button.setOnMouseClicked((MouseEvent event )->{ buttonClicked( event );});
pane.getChildren().add(button);
stage.setScene(scene);
stage.show();
}
private void listClicked(MouseEvent e){
ListView<String> l = (ListView)e.getSource();
String s = (String)l.getSelectionModel().getSelectedItem();
if( s==null ){ return; }
System.out.println( s );
text.setText( s );
return;
}
private void buttonClicked(MouseEvent e){
String[] s = new String[]{ "A0横" , "A0縦" , "A1横" , "A1縦" , "A2横" , "A2縦" };
ObservableList<String>lm = FXCollections.observableArrayList( s );
//既存のアイテムをクリアする
list.getItems().clear();
//新たなアイテムをセット
list.setItems( lm );
return;
}
}
最終更新日: 2020-01-10 04:54:10