- 浏览: 161275 次
- 性别:
- 来自: 宁波
文章分类
最新评论
-
Yuanyuanasdf:
同样的,在AioAcceptHandler中调用了socket ...
java 之异步套接字编程实例(AIO) -
Yuanyuanasdf:
为什么在AioAcceptHandler compelted中 ...
java 之异步套接字编程实例(AIO) -
shijiandeheliu:
非常感谢,运行良好
nutz简单综合实例----通过html网页对数据库进行管理操作(MVC,Ioc,Dao) -
我是你们的爹:
文章中出现了大量错误,容易误导新手!!
nutz 过滤器使用例子 -
Garlic_90:
我打包水晶报表遇到些问题,我的安装项目Debug文件夹下已经有 ...
水晶报表在vs2010t中引用及打包
当 一个tabview 要不同时候展现不同的数据表时,往往需要tabview的数据绑定到一个动态集合上。 下面的例子就展示了这种功能。
其中Person类,可以是共用,随便取的一个名字,不要以为仅仅是表示人名才能用
本例是 jdk 1.8 所写。 用了lamda达表达式
界面是这样的
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package basetech.hello; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.function.Predicate; import javafx.application.Application; import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.StringProperty; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.geometry.HPos; import javafx.geometry.Insets; import javafx.geometry.Orientation; import javafx.geometry.Pos; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.scene.control.Alert; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.control.Separator; import javafx.scene.control.TableColumn; import javafx.scene.control.TablePosition; import javafx.scene.control.TableRow; import javafx.scene.control.TableView; import javafx.scene.control.TextField; import javafx.scene.control.ToolBar; import javafx.scene.control.cell.PropertyValueFactory; import static javafx.scene.input.KeyCode.S; import javafx.scene.input.MouseButton; import javafx.scene.layout.BorderPane; import javafx.scene.layout.ColumnConstraints; import javafx.scene.layout.GridPane; import javafx.stage.Stage; import javafx.util.Callback; /** * * @author cloud */ public class TableWithMapDemo extends Application{ private Button addBT= new Button("新增"); private Button editBT= new Button("修改"); private Button cancelBT= new Button("取消"); private Button saveBT= new Button("保存"); private Button deleteBT= new Button("删除"); private boolean isAdd=false; private TableView tableView = new TableView(); private TextField firstnameTF= new TextField(); private TextField lastnameTF= new TextField(); private TextField emailTF= new TextField(); private Alert alert=new Alert(Alert.AlertType.INFORMATION); private Person person=Person.create("first","second","email"); final ObservableList<Person> data = FXCollections.observableArrayList ( person.putNewRow("张","三","zhangsan@email.com"), person.putNewRow("李","四","lisi@email.com"), person.putNewRow("王","二","wanger@email.com"), person.putNewRow("刘","七","liuqi@email.com") ); private Parent createToolbar(){ for(int i=0;i<2000;i++){ String id=Integer.toString(i); data.add(person.putNewRow("姓"+id,"名"+id,"email"+id+"@mail.com")); } ToolBar toolbar = new ToolBar(); Button cellBT=new Button("操作指定单元格"); cellBT.setOnAction( e->{ //对指定单元格操作 Person person=(Person)tableView.getItems().get(2); alert.setContentText(person.getColData(0)); alert.show(); // 得到选中行 列 int selectRow=tableView.getSelectionModel().getFocusedIndex(); int selectCol=((TablePosition)tableView.getSelectionModel().getSelectedCells().get(0)).getColumn(); Object row=tableView.getSelectionModel().getSelectedItem(); }); toolbar.getItems().addAll(addBT,editBT,saveBT,cancelBT,deleteBT,cellBT); tableView.setStyle(" .column-header {" + " -fx-size: 300;" + "}"); return toolbar; } private Parent createEditPane(){ GridPane grid=new GridPane(); grid.setAlignment(Pos.CENTER); grid.setHgap(3); grid.setVgap(20); grid.setPadding(new Insets(25,25,25,25)); grid.setGridLinesVisible(false); Label lb=new Label("姓"); grid.add(lb, 0, 0); grid.add(firstnameTF, 1, 0); Separator sp=new Separator(Orientation.VERTICAL); sp.setOpacity(0); grid.add(sp, 2, 0); lb=new Label("名"); grid.add(lb, 3, 0); grid.add(lastnameTF, 4, 0); sp=new Separator(Orientation.VERTICAL); sp.setOpacity(0); grid.add(sp, 5, 0); lb=new Label("Email"); grid.add(lb, 6, 0); grid.add(emailTF, 7, 0); sp=new Separator(Orientation.VERTICAL); sp.setOpacity(0); grid.add(sp, 8, 0); for (int i=0;i<9;i++){ ColumnConstraints column1 = new ColumnConstraints(); if (i%3==0){ column1.setPrefWidth(60); column1.setHalignment(HPos.RIGHT);//水平居中 } else if (i%3==2){ column1.setPrefWidth(10); column1.setHalignment(HPos.LEFT);//水平居中 } else { column1.setPercentWidth(20); column1.setHalignment(HPos.LEFT);//水平居中 } grid.getColumnConstraints().add(column1); } return grid; } private Parent createTop(){ GridPane grid=new GridPane(); grid.add(createToolbar(), 0, 0,2,1); grid.add(createEditPane(), 1, 1,1,1); ColumnConstraints column1 = new ColumnConstraints(); column1.setPercentWidth(5); grid.getColumnConstraints().add(column1); ColumnConstraints column2 = new ColumnConstraints(); column2.setPercentWidth(95); column2.setHalignment(HPos.RIGHT);//水平居中 grid.getColumnConstraints().add(column2); return grid; } private Parent createContent() { TableColumn firstNameCol = new TableColumn(); firstNameCol.setText("First"); firstNameCol.setId(person.getColId(0)); firstNameCol.setCellValueFactory(person.getMapCellValueFactory()); firstNameCol.prefWidthProperty().bind(tableView.widthProperty().divide(3)); // w * 1/3 TableColumn lastNameCol = new TableColumn(); lastNameCol.setId(person.getColId(1)); lastNameCol.setText("Last"); lastNameCol.setCellValueFactory(person.getMapCellValueFactory()); lastNameCol.prefWidthProperty().bind(tableView.widthProperty().divide(3)); // w * 1/3 TableColumn emailCol = new TableColumn(); emailCol.setId(person.getColId(2)); emailCol.setText("Email"); emailCol.setMinWidth(200); emailCol.setCellValueFactory(person.getMapCellValueFactory()); emailCol.prefWidthProperty().bind(tableView.widthProperty().divide(3)); // w * 1/3 tableView.setItems(data); tableView.getColumns().addAll(firstNameCol, lastNameCol, emailCol); BorderPane borderPane=new BorderPane(); borderPane.setTop(createTop()); borderPane.setCenter(tableView); return borderPane; } private void toolbarAction(){ saveBT.setDisable(true); cancelBT.setDisable(true); alert.getDialogPane().setHeaderText(null); saveBT.setOnAction(e->{ alert.setContentText("按下了保存按钮"); alert.show(); saveBT.setDisable(true); cancelBT.setDisable(true); addBT.setDisable(false); editBT.setDisable(false); deleteBT.setDisable(false); if(isAdd){ Person p= person.putNewRow(firstnameTF.getText(),lastnameTF.getText(),emailTF.getText()); data.add(p); } else { Person person =(Person)tableView.getSelectionModel().getSelectedItem(); person.editRow(firstnameTF.getText(),lastnameTF.getText(),emailTF.getText()); } isAdd=false; }); cancelBT.setOnAction(e->{ alert.setContentText("按下了取消按钮"); alert.show(); saveBT.setDisable(true); cancelBT.setDisable(true); addBT.setDisable(false); editBT.setDisable(false); deleteBT.setDisable(false); isAdd=false; }); deleteBT.setOnAction(e->{ data.remove(tableView.getSelectionModel().getFocusedIndex()); }); addBT.setOnAction(e->{ saveBT.setDisable(false); cancelBT.setDisable(false); addBT.setDisable(true); editBT.setDisable(true); deleteBT.setDisable(true); isAdd=true; }); editBT.setOnAction(e->{ saveBT.setDisable(false); cancelBT.setDisable(false); addBT.setDisable(true); editBT.setDisable(true); deleteBT.setDisable(true); isAdd=false; }); tableView.setOnMouseClicked(e->{ if(e.getButton().equals(MouseButton.SECONDARY)){ //展示 选中行列。注意:TablePosition还有表的 选中游标 TablePosition pos=(TablePosition)tableView.getSelectionModel().getSelectedCells().get(0); String str="ROW:"+Integer.toString(pos.getRow())+",COL:"+Integer.toString(pos.getColumn()); alert.setContentText(str); alert.show(); } else { // //显示选中的单行序号 // alert.setContentText(Integer.toString(tableView.getSelectionModel().getSelectedIndex())); // alert.show(); Person ps=(Person)tableView.getSelectionModel().getSelectedItem(); this.firstnameTF.setText(ps.getColData(0)); this.lastnameTF.setText(ps.getColData(1)); this.emailTF.setText(ps.getColData(2)); } }); tableView.selectionModelProperty().addListener( new ChangeListener(){ @Override public void changed(ObservableValue observable, Object oldValue, Object newValue) { alert.setContentText("选中的行是:"+tableView.getSelectionModel().getFocusedIndex()); alert.show(); } }); } @Override public void start(Stage primaryStage) throws Exception { toolbarAction(); primaryStage.setScene(new Scene(createContent(),400,300)); primaryStage.show(); } public static void main(String[] args){ launch(args); } public static class Person { private final LinkedHashMap<String,SimpleStringProperty> row=new LinkedHashMap(); protected List<String> colIds=null; private Callback< TableColumn.CellDataFeatures<Person,String>,ObservableValue<String>> mapCellValueFactory=new Callback< TableColumn.CellDataFeatures<Person,String>,ObservableValue<String>> (){ @Override public ObservableValue<String> call(TableColumn.CellDataFeatures<Person, String> param) { SimpleStringProperty rtn= param.getValue().getCol(param.getTableColumn().getId()); return rtn; } }; private Person(){}; public static Person create(String... ids){ Person p=new Person(); p.colIds=new ArrayList(); for(String id:ids){ p.colIds.add(id); } return p; } public Person copyStuct(){ Person p=new Person(); for (String id:this.colIds){ p.colIds.add(id); } return p; } public Person putNewRow(String... datas){ Person p=new Person(); p.colIds=this.colIds; for(int i=0;i<datas.length;i++){ p.row.put(colIds.get(i), new SimpleStringProperty(datas[i])); } return p; } public Person editRow(String... datas){ for(int i=0;i<datas.length;i++){ SimpleStringProperty p=row.get(colIds.get(i)); p.setValue(datas[i]); } return this; } public Person putColData(String col,String data){ row.put(col, new SimpleStringProperty(data)); return this; } public String getColData(int i){ String id=colIds.get(i); return row.get(id).getValue(); } public String getColId(int i){ String id=colIds.get(i); return id; } public String getColData(String colId){ return row.get(colId).getValue(); } public SimpleStringProperty getCol(String colId){ return row.get(colId); } public LinkedHashMap<String, SimpleStringProperty> getRow() { return row; } public Callback<TableColumn.CellDataFeatures<Person, String>, ObservableValue<String>> getMapCellValueFactory() { return mapCellValueFactory; } public List<String> getColIds() { return colIds; } } }
发表评论
-
jdbc 的PreparedStatement工具
2013-06-07 10:44 2057动机: 这里不讨论JDBC之外的东西,这里仅假 ... -
java 之异步套接字编程实例(AIO)
2012-11-02 18:28 11264本文重点以“淘宝邓悟”中学习理解整理而来。更改了客户端为swi ... -
关于字符串编码 译码 转码问题
2012-04-13 17:57 1388在java程序中,所有String 都是unicode编码形式 ... -
父类对象和子类对象之间究竟能否equals
2012-01-05 09:22 2736http://www.iteye.com/topic/1119 ... -
无限分割面板,并略谈组合模式,顺谈数据结构中的链表
2012-01-03 12:57 1567先看无限分割面板的效果图(请原谅我没考虑美观) 当在设 ... -
javaBean 关联属性,及略谈观察者模式
2011-12-28 14:51 2132javaBean 关联属性,及略 ... -
nutz 文件上传例子
2010-09-15 13:54 102022.6. 文件上传例子 用netbean 6.9.1 ,nu ... -
nutz 过滤器使用例子
2010-09-15 10:50 69913. 过滤器 在入口函数(使用了过滤器的入口函数)执行前 ... -
浅淡设计模式之精髓-----封装变化点(回贴成文)
2008-11-14 08:12 2793模式,是为了需求变动而产生,抛开需求谈模式,显得很苍白。 ... -
泛型中,Class<T>简明获得
2008-10-31 11:30 13595简述 在泛型Dao设计中,常常需要得到参数T的类型,以便实例化 ...
相关推荐
JavaFX2.0 表格框 TableView
表格源码 博文链接:https://helly2115.iteye.com/blog/722008
javafx 2.0读取_简单表格的案例_oracle数据组装成
JavaFX为新的java技术,处理动态画面,画面精美令人赞叹,中文资料现今还没有,此资料都是用英文资料集合整理翻译而来。
JavaFX+Jfoenix 学习笔记谢列文章的TableView数据表格章节源码(包括之前几章的源码)
JavaFX2开发教程 学习的好资料、适合刚刚接触的朋友哇
javafx2-demo
In Pro JavaFX 2: A Definitive Guide to Rich Clients with Java Technology, Jim Weaver, Weiqi Gao, Stephen Chin, Dean Iverson, and Johan Vos show you how you can use the JavaFX platform to create rich-...
Javafx2 系统托盘实现
JavaFX2 API chm文件
JavaFx2-api.chw虽然用的人少了,但是是个好东西
JavaFX学习,将表1内容拖拽至表2.
JavaFX2_编程语言
JavaFX+Jfoenix 学习笔记系列文章的JavaFX+Jfoenix 学习笔记(八)--事件、监听、属性绑定源码
JavaFx 2.x 地图缩放拖拽 实现了图片的放大 拖拽 有要的可以找我,实现定点标记,定点放大
In Pro JavaFX 2: A Definitive Guide to Rich Clients with Java Technology, Jim Weaver, Weiqi Gao, Stephen Chin, Dean Iverson, and Johan Vos show you how you can use the JavaFX platform to create rich-...
JavaFx 2.X 记事本 需要demo的 可以找我
javafx
javafx2 日期控件。 个人整理修改,欢迎大家下载使用,junit.java 是测试程序。可直接运行。
javaFX2的文档,官方网站下载后再整理的,对致力于FX2的人有帮助。