- 浏览: 163224 次
- 性别:
- 来自: 宁波
文章分类
最新评论
-
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 2099动机: 这里不讨论JDBC之外的东西,这里仅假 ... -
java 之异步套接字编程实例(AIO)
2012-11-02 18:28 11347本文重点以“淘宝邓悟”中学习理解整理而来。更改了客户端为swi ... -
关于字符串编码 译码 转码问题
2012-04-13 17:57 1441在java程序中,所有String 都是unicode编码形式 ... -
父类对象和子类对象之间究竟能否equals
2012-01-05 09:22 2777http://www.iteye.com/topic/1119 ... -
无限分割面板,并略谈组合模式,顺谈数据结构中的链表
2012-01-03 12:57 1632先看无限分割面板的效果图(请原谅我没考虑美观) 当在设 ... -
javaBean 关联属性,及略谈观察者模式
2011-12-28 14:51 2188javaBean 关联属性,及略 ... -
nutz 文件上传例子
2010-09-15 13:54 102572.6. 文件上传例子 用netbean 6.9.1 ,nu ... -
nutz 过滤器使用例子
2010-09-15 10:50 70823. 过滤器 在入口函数(使用了过滤器的入口函数)执行前 ... -
浅淡设计模式之精髓-----封装变化点(回贴成文)
2008-11-14 08:12 2854模式,是为了需求变动而产生,抛开需求谈模式,显得很苍白。 ... -
泛型中,Class<T>简明获得
2008-10-31 11:30 13637简述 在泛型Dao设计中,常常需要得到参数T的类型,以便实例化 ...
相关推荐
在JavaFX中,表格是一种强大的可视化组件,用于展示和操作数据。这个压缩包包含了一些关键的源码文件,如`CustomerTable.fx`、`Cell.fx`和`HeaderCell.fx`,它们是构建JavaFX表格应用的核心部分。让我们深入探讨这些...
"javafx之属性与绑定" JavaFX 是一种新的 Java 技术,用于处理动态画面,画面精美令人赞叹。了解 JavaFX 的属性和绑定是非常重要的。 JavaFX 的属性是基于 JavaBean 的模式,但做了扩展和改进。JavaFX 的属性经常...
在JavaFX 2.0中,TableView是一种强大的控件,用于以表格的形式展示数据。它提供了灵活的布局和丰富的功能,使开发者能够轻松地构建数据驱动的用户界面。以下是关于JavaFX 2.0表格框TableView及其核心组件的详细解释...
2. **数据绑定**: - 要将数据加载到TableView,我们需要一个ObservableList,这是JavaFX中的一个动态列表,可以监听其内容的变化并自动更新界面。 - 使用TableView的items属性将ObservableList绑定到TableView,...
本案例主要关注如何使用JavaFX 2.0来读取数据并展示在简单的表格中,特别是从Oracle数据库中获取数据并进行组装的过程。 首先,我们需要确保已经安装了JavaFX SDK,并且在项目中正确设置了相关的依赖。JavaFX 2.0...
2. **数据表格组件(TableView)** - `TableView`是JavaFX中的一个核心组件,用于显示二维数据表格。 - 可以通过设置`TableColumn`来定义列,每个`TableColumn`对应一个数据字段。 - 支持数据绑定,可以将数据...
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.0是JavaFX的重大更新,与之前的1.3版本存在许多不兼容性,因此,如果要涉足JavaFX开发,建议直接采用2.0版本。JavaFX2.0引入了许多新特性,提升了用户体验和开发者的工作效率。 首先,安装JavaFX2.0 SDK是...
在“JavaFX+Jfoenix 学习笔记(八)--事件、监听、属性绑定源码”中,我们将深入探讨JavaFX中的事件处理、监听器和属性绑定。 1. **事件处理**: 在JavaFX中,事件是用户与应用程序交互时发生的动作,如点击按钮、...
javafx2-demo
JavaFX是Sun Microsystems在2007年的JavaOne大会上宣布的一个新产品家族,其目标是使开发者能够开发出内容丰富的应用程序,并部署到各种消费者设备上,如手机、电视、车载系统以及浏览器等。 **关键知识点**: - *...
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是一个强大的Java应用程序框架,用于创建丰富的图形用户界面(GUI)。在JavaFX2中,日期控件是用户界面中的重要元素,它允许用户选择日期或者进行日期相关的操作。这个压缩包文件“datecontrol”可能包含了一...
Javafx2 系统托盘实现
总结来说,这个“javaFX Demo 模板案例”涵盖了JavaFX的主要特性,包括UI设计、图形绘制、媒体播放、数据绑定和样式定制。通过学习这个案例,开发者可以快速掌握JavaFX的基本用法,并为构建自己的富客户端应用打下...
JavaFX2 API chm文件
在JavaFX2中引入第三方字体是一项常见的需求,它允许开发者为应用程序添加独特的视觉风格。本文将详细介绍如何在JavaFX2中使用自定义字体,并通过一个简单的示例——`CustomFontApp`来阐述整个过程。 首先,你需要...
JavaFx2-api.chw虽然用的人少了,但是是个好东西
2. **TableView组件**:TableView是JavaFX中的一个核心组件,用于显示表格形式的数据。它允许你将数据模型与视图分离,这样可以方便地更新数据而不会影响界面的呈现。 3. **ObservableList**:在JavaFX中,为了与...
在JavaFX 2.x中,地图缩放和拖拽功能是构建交互式地图应用的关键部分。这个技术允许用户通过鼠标操作来改变地图的视角,放大查看细节或缩小以获取更广阔的视图,同时还能通过拖动来移动地图,查看不同区域。下面我们...