小编dev*_*per的帖子

带有自定义对象的Javafx组合框显示对象地址,但使用了自定义单元工厂

我有一个组合框,显示User对象列表.我为组合框编写了一个自定义单元工厂:

@FXML ComboBox<User> cmbUserIds;
cmbUserIds.setCellFactory(new Callback<ListView<User>,ListCell<User>>(){
                @Override
                public ListCell<User> call(ListView<User> l){
                    return new ListCell<User>(){
                        @Override
                        protected void updateItem(Useritem, boolean empty) {
                            super.updateItem(item, empty);
                            if (item == null || empty) {
                                setGraphic(null);
                            } else {
                                setText(item.getId()+"    "+item.getName());
                            }
                        }
                    } ;
                }
            });
Run Code Online (Sandbox Code Playgroud)

ListView显示一个字符串(id + name),但是当我从listview中选择一个项目时,Combobox显示toString()方法返回值即对象的地址.我无法覆盖toString()方法,因为用户域对象应该与服务器上的对象相同.如何在组合框中显示id?请建议

EDIT1

我试过下面的代码.现在,当我从listview中选择一个值时,组合框会显示id.

cmbUserIds.setConverter(new StringConverter<User>() {
              @Override
              public String toString(User user) {
                if (user== null){
                  return null;
                } else {
                  return user.getId();
                }
              }

            @Override
            public User fromString(String id) {
                return null;
            }
        }); …
Run Code Online (Sandbox Code Playgroud)

combobox javafx-2

19
推荐指数
2
解决办法
3万
查看次数

JavaFX如何使用CSS更改tableview列的背景颜色?

使用javafx场景构建器,我创建了一个包含少量可编辑列和少量不可编辑列的TableView.如何为不可编辑的列设置CSS样式,以便整个列显示为灰色.我创建了一个类似下面的样式类,并将其映射到javafx场景构建器中的表列.但它没有用.

.greyout1 .table-column-cell{
-fx-background-color:rgb(243,243,243);
-fx-border-color:rgb(159,159,159);
}
Run Code Online (Sandbox Code Playgroud)

搜索论坛,找不到样式tableview专栏的解决方案.请你建议一个方法?

javafx-2 fxml scenebuilder

3
推荐指数
1
解决办法
1万
查看次数

JavaFX:在场景中的任何位置单击鼠标时出现IllegalArgumentException

嗨,IllegalArgumentException当我点击任何控件或场景的空白区域时,我得到了.下面是堆栈跟踪.我不能为每个控件编写一个方法MouseEvent.当我点击场景中的空白区域或禁用的控件时,你能否建议一个解决方案来取消这个鼠标事件.

java.lang.IllegalArgumentException: argument type mismatch
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1435)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:69)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:217)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:170)
    at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:38)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:37)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:53)
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:33)
    at javafx.event.Event.fireEvent(Event.java:171)
    at javafx.scene.Scene$MouseHandler.process(Scene.java:3324)
    at javafx.scene.Scene$MouseHandler.process(Scene.java:3164)
    at javafx.scene.Scene$MouseHandler.access$1900(Scene.java:3119)
    at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1559)
    at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2261)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:228)
    at com.sun.glass.ui.View.handleMouseEvent(View.java:528)
    at com.sun.glass.ui.View.notifyMouse(View.java:922)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.access$100(WinApplication.java:29)
    at com.sun.glass.ui.win.WinApplication$3$1.run(WinApplication.java:73)
    at java.lang.Thread.run(Thread.java:722)
Run Code Online (Sandbox Code Playgroud)

java mouseevent illegalargumentexception javafx-2

1
推荐指数
1
解决办法
1836
查看次数