如何在JavaFX中向组合框添加掩码?
有没有办法在组合框中添加掩码?我想在我的组合框中添加电话格式,但我不知道怎么做 下面是文本字段中的掩码示例如何在JavaFX中向组合框添加掩码?,java,javafx,javafx-8,Java,Javafx,Javafx 8,有没有办法在组合框中添加掩码?我想在我的组合框中添加电话格式,但我不知道怎么做 下面是文本字段中的掩码示例 我基本上想要这个,但是在组合框中。您必须使用组合框的CellFactory import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.ComboBox; import javafx.scene.control.Label; import javafx.scen
我基本上想要这个,但是在组合框中。您必须使用组合框的
CellFactory
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Label;
import javafx.scene.control.ListCell;
import javafx.scene.control.ListView;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
/**
* JavaFX App
*/
public class App extends Application {
@Override
public void start(Stage stage) {
ComboBox<PhoneInfo> comboBox = new ComboBox();
comboBox .setCellFactory((ListView<PhoneInfo> l) -> new ListCell<PhoneInfo>() {
TextField tf1 = new TextField();
TextField tf2 = new TextField();
TextField tf3 = new TextField();
GridPane root = new GridPane();
{
root.add(new Label("Phone Number: "), 0, 0);
root.add(new Label("Extension: "), 0, 1);
root.add(new Label("SSN: "), 0, 2);
root.add(tf1, 1, 0);
root.add(tf2, 1, 1);
root.add(tf3, 1, 2);
}
@Override
protected void updateItem(PhoneInfo item, boolean empty) {
super.updateItem(item, empty);
if (item == null || empty) {
setGraphic(null);
setText(null);
} else {
tf1.setText(item.getNumber());
tf2.setText(item.getExtension());
tf3.setText(item.getSsn());
setGraphic(root);
}
}
});
PhoneInfo phoneInfo = new PhoneInfo("555-555-555", "3333", "444-44-4444");
comboBox.getItems().add(phoneInfo);
stage.setScene(new Scene(new StackPane(comboBox)));
stage.show();
}
public static void main(String[] args) {
launch();
}
private static class PhoneInfo {
private String number;
private String extension;
private String ssn;
public PhoneInfo(String number, String extension, String ssn) {
this.number = number;
this.extension = extension;
this.ssn = ssn;
}
public String getSsn() {
return ssn;
}
public void setSsn(String ssn) {
this.ssn = ssn;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getExtension() {
return extension;
}
public void setExtension(String extension) {
this.extension = extension;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("PhoneInfo{number=").append(number);
sb.append(", extension=").append(extension);
sb.append(", ssn=").append(ssn);
sb.append('}');
return sb.toString();
}
}
}
导入javafx.application.application;
导入javafx.scene.scene;
导入javafx.scene.control.ComboBox;
导入javafx.scene.control.Label;
导入javafx.scene.control.ListCell;
导入javafx.scene.control.ListView;
导入javafx.scene.control.TextField;
导入javafx.scene.layout.GridPane;
导入javafx.scene.layout.StackPane;
导入javafx.stage.stage;
/**
*JavaFX应用程序
*/
公共类应用程序扩展应用程序{
@凌驾
公众假期开始(阶段){
ComboBox ComboBox=新建ComboBox();
comboBox.setCellFactory((ListView l)->new ListCell(){
TextField tf1=新的TextField();
TextField tf2=新的TextField();
TextField tf3=新的TextField();
GridPane root=新的GridPane();
{
添加(新标签(“电话号码”)、0、0;
添加(新标签(“扩展名”)、0、1;
添加(新标签(“SSN:”),0,2);
root.add(tf1,1,0);
添加(tf2,1,1);
添加(tf3,1,2);
}
@凌驾
受保护的void updateItem(PhoneInfo项,布尔值为空){
super.updateItem(项,空);
如果(项==null | |空){
设置图形(空);
setText(空);
}否则{
tf1.setText(item.getNumber());
tf2.setText(item.getExtension());
setText(item.getSsn());
设定图形(根);
}
}
});
PhoneInfo PhoneInfo=新的PhoneInfo(“555-555-555”、“3333”、“444-44-4444”);
comboBox.getItems().add(phoneInfo);
stage.setScene(新场景(新堆栈窗格(组合框));
stage.show();
}
公共静态void main(字符串[]args){
发射();
}
私有静态类PhoneInfo{
私有字符串编号;
私有字符串扩展;
私有字符串ssn;
公共电话信息(字符串编号、字符串扩展名、字符串ssn){
这个数字=数字;
这个扩展=扩展;
这个.ssn=ssn;
}
公共字符串getSsn(){
返回ssn;
}
公共无效设置序列号(字符串序列号){
这个.ssn=ssn;
}
公共字符串getNumber(){
返回号码;
}
公共无效集合号(字符串号){
这个数字=数字;
}
公共字符串getExtension(){
返回扩展;
}
公共void集合扩展名(字符串扩展名){
这个扩展=扩展;
}
@凌驾
公共字符串toString(){
StringBuilder sb=新的StringBuilder();
sb.append(“PhoneInfo{number=”)。append(number);
sb.append(“,extension=”).append(extension);
sb.append(“,ssn=”).append(ssn);
某人附加('}');
使某人返回字符串();
}
}
}
可编辑的
组合框
?哪部分?它实际上是您想要的某种自定义弹出窗口(类似于日期选择器
或颜色选择器
)?是否要显示弹出窗口中每个项目的所有这些信息?请在回答问题时提供此信息。