javafx这些学会后,开发就不难了,往tablecloumn列中添加按钮,修改javafx中tableview中tablecell中的值,修改完回车表示保存到内存中
- javafx开发过程中遇见难题,往tablecloumn列中添加按钮

想了很久的方法,也配有办法判断每行中有数据的地方添加按钮set
bank_caozuo.setCellFactory((col)->{
TableCell<BankAccount, String> cell = new TableCell<BankAccount, String>(){
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
Button button = new Button("set");
if (empty) {
//如果此列为空默认不添加元素
setText(null);
setGraphic(null);
} else {
this.setGraphic(button);
}
解释:
bank_caozuo为定义的列
@FXML
private TableColumn<BankAccount, String> bank_caozuo;
其实TableCell里面方法updateItem(String item, boolean empty)一共两个参数,这个empty可以判断列中每行是否有值,为空不添加元素需要设置setText(null); setGraphic(null);
不为空的话,添加set按钮this.setGraphic(button);
2. 如何修改javafx中tableview中tablecell中的值,修改完回车表示保存到内存中
问题:javafx内部是有bind的,也就是说每次修改完之后,都会修改表格内存中的值得,后面咱们保存到自己的文件或者数据库中即可做到自动保存
bankFangxiang.setCellFactory(TextFieldTableCell.forTableColumn());
bankFangxiang.setCellValueFactory(cellData->cellData.getValue().bankFangxiangProperty());
bankFangxiang.setOnEditCommit((col)->{
BankAccount bankAccount = (BankAccount)col.getTableView().getItems().get(col.getTablePosition().getRow());
bankAccount.setBankFangxiang(col.getNewValue());
iniUtil.writeByPathName(bankAccount.getPath(),"account-normal","zhuanzhang",col.getNewValue());//写入文件中
});
bankFangxiang.setCellFactory(TextFieldTableCell.forTableColumn());表示表格支持回车保存到展示的表格中 bankFangxiang.setCellValueFactory(cellData->cellData.getValue().bankFangxiangProperty()); 表示将bean的值自动填充到tablecell中
col.getTablePosition().getRow() 表示获取鼠标编辑的那个tablecell的序号
(BankAccount)col.getTableView().getItems().get() 表示获取tablecell的序号的bean,然后做类型转换为BankAccount即可获取到编辑该行bean
col.getNewValue() 表示获取tabcell编辑之后的值
3. javafx中按钮打开fxml对应的窗口
问题:存在一个按钮需要打开fxml对应的窗口
controller类中的调用
//转账,单独打开菜单进行转账
zhu.setOnMouseClicked((col) -> { BankViewer bankViewer = new BankViewer();
try {
bankViewer.start(new Stage());
} catch (Exception e) {
e.printStackTrace();
}
});
BankViewer.java
public class BankViewer extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("queren.fxml"));
Scene scene = new Scene(root, 516, 264);
primaryStage.setTitle("确认");
primaryStage.setScene(scene);
primaryStage.show();
}
}
queren.fxml
<?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import java.lang.*?> <Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="264.0" prefWidth="516.0"
xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="controller.BankController">
<children>
<TableView fx:id="bank_tableview" editable="true" prefHeight="265.0" prefWidth="516.0">
<columns>
<TableColumn fx:id="account" prefWidth="114.0" text="用户名" />
<TableColumn fx:id="money" prefWidth="126.0" text="456" />
<TableColumn fx:id="bankFangxiang" prefWidth="38.0" text="123" />
<TableColumn fx:id="bankPasswd" prefWidth="38.0" text="234" />
<TableColumn fx:id="bank_caozuo" prefWidth="64.0" text="操作" />
</columns>
<columnResizePolicy>
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
</columnResizePolicy>
</TableView>
</children>
</Pane>
其中
fx:controller="controller.BankController"对应的
BankController.java就是对应的controller类
javafx这些学会后,开发就不难了,往tablecloumn列中添加按钮,修改javafx中tableview中tablecell中的值,修改完回车表示保存到内存中的更多相关文章
- iOS开发UI篇—在UIImageView中添加按钮以及Tag的参数说明
ios开发UI篇—在ImageView中添加按钮以及Tag的参数说明 一.tag参数 一个视图通常都只有一个父视图,多个子视图,在开发中可以通过使用子视图的tag来取出对应的子视图.方法为Viewwi ...
- ios开发UI篇—在ImageView中添加按钮以及Tag的参数说明
ios开发UI篇—在ImageView中添加按钮以及Tag的参数说明 一.tag参数 一个视图通常都只有一个父视图,多个子视图,在开发中可以通过使用子视图的tag来取出对应的子视图.方法为Viewwi ...
- 从零开始学ios开发(三):第一个有交互的app
感谢大家的关注,也给我一份动力,让我继续前进.有了自己的家庭有了孩子,过着上有老下有小的生活,能够挤出点时间学习真的很难,每天弄好孩子睡觉已经是晚上10点左右了,然后再弄自己的事情,一转眼很快就到12 ...
- 学Android开发,入门语言java知识点
学Android开发,入门语言java知识点 Android是一种以Linux为基础的开源码操作系统,主要使用于便携设备,而linux是用c语言和少量汇编语言写成的,如果你想研究Android,就去学 ...
- 从零开始学ios开发(十三):Table Views(下)Grouped and Indexed Sections
在前面2篇关于Table View的介绍中,我们使用的Style都是Plain,没有分组,没有index,这次学习的Table View和iphone中的通讯录很像,有一个个以字符为分割的组,最右边有 ...
- 学Android开发 这19个开发工具助你顺风顺水
学Android开发 这19个开发工具助你顺风顺水 要想快速开发一个Android应用,通常会用到很多工具,巧妙利用这些工具,能让我们的开发工作事半功倍,节省大量时间,下面大连Android开发培训小 ...
- 从零开始学 iOS 开发的15条建议
事情困难是事实,再困难的事还是要每天努力去做是更大的事实. 因为我是一路自学过来的,并且公认没什么天赋的前提下,进步得不算太慢,所以有很多打算从零开始的朋友会问我,该怎么学iOS开发.跟粉丝群的朋友交 ...
- 【视频】零基础学Android开发:蓝牙聊天室APP(四)
零基础学Android开发:蓝牙聊天室APP第四讲 4.1 ListView控件的使用 4.2 BaseAdapter具体解释 4.3 ListView分布与滚动事件 4.4 ListView事件监听 ...
- JavaFX横幅类游戏开发 教训 游戏贴图
上一节课,我们即将完成战旗Demo有了一个大概的了解.教训这,我们将学习绘制游戏地图. 由于JavaFX 2.2中添加了Canvas相关的功能,我们就能够使用Canvas来实现游戏绘制了. 游戏地图绘 ...
随机推荐
- jenkins构建邮件自动发送,测试邮件发送成功,构建项目邮件发送不成功的问题
提示问题: Connection error sending email,retrying once more in 10 seconds…… Connection error sending ema ...
- js--动画
运动框架实现思想1.速度(改变值left,right,width,height,opacity)2.缓冲运动3.多物体运动4.任意值变化5.链式运动6.同时运动 我们先来介绍第一章改变left值来使物 ...
- 项目Beta冲刺(6/7)(追光的人)(2019.5.28)
所属课程 软件工程1916 作业要求 Beta冲刺博客汇总 团队名称 追光的人 作业目标 描述Beta冲刺每日的scrum和PM报告两部分 队员学号 队员博客 221600219 小墨 https:/ ...
- Css背景设置 、
每天进步一小步,一年进步一大步. 第一次发博客园文章,主要记录自己学习的一个过程. CSS3 背景 CSS3 包含多个新的背景属性,它们提供了对背景更强大的控制. background-size ba ...
- crontab每小时运行一次(转)
https://blog.csdn.net/liu0808/article/details/80668705 先给出crontab的语法格式 对于网上很多给出的每小时定时任务写法,可以说绝大多数都是错 ...
- ssh ssm ssi 服务器平台架构
1.spring + springmvc + mybatis 使用maven构建,数据库是oracle,主要是温习mybatis配置以及与spring集成.这种框架目前是使用最广泛的,这里就不多说 2 ...
- tomcat和apache的区别--http server vs application server
1. Apache是web服务器,Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展. 2. Apache和Tomcat都可以做为独立的web服务器来运行,但是A ...
- 基于Docker方式实现Elasticsearch集群
采用docker容器,搭建两个es集群,可根据步骤自行扩展n+集群 1.创建es挂载目录 cd /usr/localmkdir -p es/config 2.创建es存放数据目录 cd esmkdir ...
- LeetCode 325. Maximum Size Subarray Sum Equals k
原题链接在这里:https://leetcode.com/problems/maximum-size-subarray-sum-equals-k/ 题目: Given an array nums an ...
- call JSON.parse JSON.stringify typeof 的使用及严格模式this的使用
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...