JavaFX 2 Automatic Column Width

前端 未结 8 850
盖世英雄少女心
盖世英雄少女心 2020-11-29 01:09

I have a JavaFX 2 table that is displaying contact details for people, lets imagine there are three columns: first name, last name and email address. When my application sta

8条回答
  •  生来不讨喜
    2020-11-29 01:33

    After 3 years, finally I found the solution, javafx column in tableview auto fit size

    import com.sun.javafx.scene.control.skin.TableViewSkin;
    import javafx.scene.control.Skin;
    import javafx.scene.control.TableColumn;
    import javafx.scene.control.TableView;
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    
    public class GUIUtils {
        private static Method columnToFitMethod;
    
        static {
            try {
                columnToFitMethod = TableViewSkin.class.getDeclaredMethod("resizeColumnToFitContent", TableColumn.class, int.class);
                columnToFitMethod.setAccessible(true);
            } catch (NoSuchMethodException e) {
                e.printStackTrace();
            }
        }
    
        public static void autoFitTable(TableView tableView) {
            tableView.getItems().addListener(new ListChangeListener() {
                @Override
                public void onChanged(Change c) {
                    for (Object column : tableView.getColumns()) {
                        try {
                            columnToFitMethod.invoke(tableView.getSkin(), column, -1);
                        } catch (IllegalAccessException | InvocationTargetException e) {
                            e.printStackTrace();
                        }
                    }
                }
            });
        }
    }
    
        

    提交回复
    热议问题