Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >对象内容更改时的组合框刷新值和列表视图

对象内容更改时的组合框刷新值和列表视图
EN

Stack Overflow用户
提问于 2014-11-12 20:50:55
回答 1查看 12.1K关注 0票数 2

当用于在组合框中显示文本的对象的内容发生变化时,我希望更新我的组合框。

下面是一个示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.javafx.example.combobox;

import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.collections.FXCollections;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.scene.control.TextField;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.stage.Stage;
import javafx.util.StringConverter;

public class ComboboxSample extends Application {


    class Sequence {
        public StringProperty name = new SimpleStringProperty();

        public Sequence(String name) {
            super();
            this.name.set(name);
        }

        @Override
        public String toString() {
            return "null";
        }
    }

    @Override
    public void start(Stage stage) throws Exception {
        stage.setTitle("ComboBoxSample");

        ComboBox<Sequence> combo = new ComboBox<>();
        combo.setItems(FXCollections.observableArrayList(
                new Sequence("Toto"),
                new Sequence("Titi")));
        combo.getSelectionModel().selectFirst();
        combo.setConverter(new StringConverter<ComboboxSample.Sequence>() {
            @Override
            public String toString(Sequence sequence) {
                return sequence.name.get();
            }

            @Override
            public Sequence fromString(String string) {
                System.out.println("call fromString");
                return null;
            }
        });

        TextField text = new TextField();
        Button renameButton = new Button("Rename");

        renameButton.setOnAction(evt -> combo.getValue().name.set(text.getText()));

        HBox root = new HBox(combo, text, renameButton);
        HBox.setHgrow(text, Priority.ALWAYS);

        stage.setScene(new Scene(root));
        stage.show();

    }

    public static void main(String... args) {
        launch(args);
    }
}

组合框包含具有属性名称的对象。如果我重命名此属性,显示不会更改,或者有时会更改,但不会一直更改。当对象更改而不是其内容更改时,它是combobox更新时的标准行为。

如何在更改时强制combobox刷新它的值和listview?

谢谢

EDIT1:

在observaleList中使用回调似乎是一种解决方案。打包com.javafx.example.combobox;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import javafx.application.Application;
import javafx.beans.Observable;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.scene.control.TextField;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.stage.Stage;
import javafx.util.Callback;
import javafx.util.StringConverter;

public class ComboboxSample extends Application {

    ObservableList<Sequence> sequences;


    class Sequence {
        public StringProperty name = new SimpleStringProperty();

        public Sequence(String name) {
            super();
            this.name.set(name);
        }

        @Override
        public String toString() {
            return "null";
        }
    }

    @Override
    public void start(Stage stage) throws Exception {
        stage.setTitle("ComboBoxSample");

        Callback<Sequence, Observable[]> extractor = new Callback<Sequence, Observable[]>() {
            @Override
            public Observable[] call(Sequence s) {
                return new Observable[] {s.name};
            }
        };
        sequences = FXCollections.observableArrayList(extractor);
        sequences.addAll(
                new Sequence("Toto"),
                new Sequence("Titi"));

        ComboBox<Sequence> combo = new ComboBox<>();
        combo.setItems(sequences);
        combo.getSelectionModel().selectFirst();
        combo.setConverter(new StringConverter<ComboboxSample.Sequence>() {
            @Override
            public String toString(Sequence sequence) {
                return sequence.name.get();
            }

            @Override
            public Sequence fromString(String string) {
                System.out.println("call fromString");
                return null;
            }
        });
        combo.valueProperty().addListener((obs, oldValue, newValue) -> System.out.println("Change from " + oldValue.name.get() + " to " + newValue.name.get())); 

        TextField text = new TextField();
        Button renameButton = new Button("Rename");

        renameButton.setOnAction(evt -> {
            combo.getValue().name.set(text.getText());
        });

        HBox root = new HBox(combo, text, renameButton);
        HBox.setHgrow(text, Priority.ALWAYS);

        stage.setScene(new Scene(root));
        stage.show();

    }

    public static void main(String... args) {
        launch(args);
    }
}
EN

回答 1

Stack Overflow用户

发布于 2015-08-12 06:27:03

每次向对象列表添加新值时,请再次设置combobox值。这对我很有效。我做了一个小例子来说明这一点。希望能对大家有所帮助

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;


public class ComboTest extends Application {
    int i =0;
    ObservableList<String> list = FXCollections.observableArrayList("A","B");
    ComboBox<String> combo = new ComboBox();
    @Override
    public void start(Stage primaryStage) {
        Button btn = new Button();
        combo.setPromptText("Testing combobox");
        combo.setPrefWidth(300);
        btn.setText("Add items to list");
        btn.setOnAction(new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent event) {
                list.add(String.valueOf(i));
                System.out.println("size of list " + list.size() );
                i++;
               combo.setItems(list);
            }
        });
        combo.setItems(list);
        VBox root = new VBox();
        root.getChildren().addAll(btn,combo);
        root.setSpacing(20);
        root.setAlignment(Pos.CENTER);
        Scene scene = new Scene(root);

        primaryStage.setTitle("Hello World!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }

}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26896290

复制
相关文章
MFC控件编程之组合框跟列表框
  如果要使用组合框跟列表框.那么就要知道.组合框列表框是最核心的东西就是索引. 索引是从0开始的.
IBinary
2019/05/25
1.1K0
基因集合的数据框,列表和对象形式
这些都离不开生物学功能数据库,但是数据库不仅仅是GO/KEGG哦,目前最齐全的应该是属于 MSigDB(Molecular Signatures Database)数据库中定义了已知的基因集合:http://software.broadinstitute.org/gsea/msigdb 包括H和C1-C7八个系列(Collection),每个系列分别是:
生信技能树
2022/12/16
1.6K0
基因集合的数据框,列表和对象形式
oracle物化视图的刷新命令_物化视图增量刷新
普通视图仅包含其定义和被引用表的元数据,并不实际存储数据,查询数据时需要通过视图再去主表中获取数据。但是当需要查询的数据字段过多时,普通视图的效率会急剧下降。物化视图将经常使用的数据拷贝并存储下来,在查询时就可以直接返回数据。本质上是一个物理表,会占用磁盘空间。
全栈程序员站长
2022/11/15
2.6K0
【译】在列表视图中处理空值
本篇文章主要针对两类开发者。第一个是曾遇到过IllegalArgumentException: Path must not be empty问题的开发者。第二个则是当ListView使用了未被完整加载的图像,应用程序仍能正确运转的开发者们。
小鄧子
2018/08/20
1.2K0
列表内数字组合最大值
第一种 import itertools lt = [4, 40, 45, 6, 9, 3, 5, 2, 8] lt2 = map(str, lt) it = itertools.permutations(lt2,len(lt)) # for i in it: # print(i) m = map(lambda x:''.join(x), it) # for i in m: # print(i) print(max(m)) # print(m, type(m)) 第二种 lt = [4,
py3study
2020/01/17
8520
列表视图(ListView和ListActivity)
在ListView中显示网络图片  ImageView 类虽然有一个 setImageUri 方法,但不能直接接受一个由网络地址生成的uri作为参数从而显示图片,我们只好使用其 setImageBit
欢醉
2018/01/22
1.6K0
列表视图(ListView和ListActivity)
模板代码 - 列表和下拉刷新
摘要总结:本篇文章主要介绍了如何使用ViewStub和ViewStubCompat实现多布局,以便在不同的屏幕尺寸和分辨率下达到较好的展示效果。同时,还介绍了如何使用ViewStub和ViewStubCompat实现内边距和圆角,以及自定义属性在布局中的使用。
用户1172465
2018/01/05
2.9K0
html下拉框设置默认值_html下拉列表框默认值[通俗易懂]
HTML 和 JavaScript 综合练习题一、单项选择 1. Web 使用( D )在服务器和客户端之间传输数据。 A.FTP B. Telnet C. E-mail D. HTTP 2. HTTP 服务默认……
全栈程序员站长
2022/11/15
33.9K1
Vue改变数组值,页面视图为何不刷新?
这个问题还折腾了快半个小时,归根到底还是不经常使用的后果,好多代码之前都用过,像封装组件这种还要折腾,简直是不知道说什么好呀,只能以后多使用了。
执行上下文
2022/07/26
1.7K0
Vue改变数组值,页面视图为何不刷新?
数据框、矩阵和列表20230202
2、read.csv(" ") ⚠️文件在当前的工作路径中可以直接使用文件名,否则需要使用绝对路径,否则就会报错。
顾卿岚
2023/02/03
1.4K0
UI自动化 --- UI Automation 基础详解
上一篇文章UI自动化 --- 微软UI Automation中,介绍了UI Automation能够做什么,且借助 Inspect.exe 工具完成了一个模拟点击操作的Demo,文章结尾也提出了自己的一些想法,想要借助UI Automation做一个UI自动化测试平台。想法毕竟是想法,还是得落地实践,一步一步来。
Niuery Diary
2023/10/22
3.7K0
UI自动化 --- UI Automation 基础详解
【Python】基于多列组合删除数据框中的重复值
最近公司在做关联图谱的项目,想挖掘团伙犯罪。在准备关系数据时需要根据两列组合删除数据框中的重复值,两列中元素的顺序可能是相反的。
阿黎逸阳
2020/09/08
14.8K0
在jquery中用下拉框列表显示默认的值
1、在postUpdate.jsp中添加js如下: <script type="text/javascript"> $(document).ready(function(){ var qx_value = $('#qx_select_value').val(); $("#qx_select option[value='"+qx_value+"']").attr("selected", "selected"); }) </script> 核心代码就这一句话: $("
qubianzhong
2018/08/10
3.6K0
对象的组合
同步策略 规定了如何将不变性条件、线程封闭和加锁机制结合起来以维护线程的安全性,并且规定了哪些变量由哪些锁来保护
JavaEdge
2022/11/29
4090
flutter的列表下拉刷新
flutter的列表下拉刷新需要借助一个组件来实现,这个组件的名字是RefreshIndicator,直译过来就是刷新指示灯。
挥刀北上
2021/01/07
4.8K0
flutter的列表下拉刷新
Flat风格的Qml组合框
基于Qml的ComboBox控件修改而成。 组合框代码 import QtQuick 2.0 import QtQuick.Controls 2.0 import QtGraphicalEffect
Qt君
2019/12/16
1.2K0
突破数据验证列表,使用VBA创建3层和4层级联组合框
你是否曾想过管理级联数据验证(即“数据有效性”)列表,而不需要几十到数百个命名的单元格区域?这里为你提供一个示例工作簿,其中运用的方法可以动态创建数据验证列表,允许管理垂直列表,向列表中添加新列,并无缝更新数据验证列表。
fanjy
2022/11/16
1.4K0
突破数据验证列表,使用VBA创建3层和4层级联组合框
Django学习-第十二讲:视图高级(二)类视图、模板视图、列表视图、和分页
在写视图的时候,Django除了使用函数作为视图,也可以使用类作为视图。使用类视图可以使用类的一些特性,比如继承等。
小海怪的互联网
2019/10/08
1K0
SMART让您的内容和SEO更智能
你多学一样本事,就少说一句求人的话!只有自己足够强大,才不会被别人践踏。 SMART目标管理原则,如何用SMART原则来与SEO相关联?如何让SMART原则应用到网站内容中去?今天主要来聊聊SMART
黄伟SEO
2018/05/17
8440
js页面刷新或关闭时弹框消失_js刷新页面如何保留页面内容
  用法:onbeforeunload 事件在即将离开当前页面(刷新或关闭)时触发。该事件可用于弹出对话框,提示用户是继续浏览页面还是离开当前页面。对话框默认的提示信息根据不同的浏览器有所不同,标准的信息类似 “确定要离开此页吗?”。该信息不能删除。但你可以自定义一些消息提示与标准信息一起显示在对话框。注意: 在 Firefox 浏览器中,只显示默认提醒信息(不显示自定义信息)。
全栈程序员站长
2022/11/17
11.9K0

相似问题

组合框的列表视图值

11

当组合框#1更改值时刷新页面和组合框#2的内容

23

绑定对象更改时刷新视图

11

是否在字段值更改时刷新查询驱动的组合框值?

30

列表视图组合框

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文