JavaFX TableColumns'由于垂直滚动条

时间:2016-05-24 20:57:33

标签: javafx-8

在网上搜索此问题的最后几个小时后,我决定需要你的帮助。

此问题与此主题类似:Javafx: Tableview header is not aligned with rows

那里没有提供答案,而且我认为,我的情况略有不同:

Screenshot directly after launch

Screenshot after scrolling or clicking

我有一个正确设置的TableView,包含重用的CellFactories和CellValueFactories。数据方面,一切都按照我的意图100%工作。然而,一旦我用更多的行填充我的表,我的视图可以显示它自然开始显示垂直滚动条。从那一刻开始(参见第一个屏幕截图),列标题不再与列对齐。它似乎正好是滚动条的宽度扭曲了宽度分布(我使用带有几个固定宽度列的ConstraintResizePolicy,其余的依赖于计算的宽度,再次,否则无法正常工作)。

只要我使用鼠标滚轮滚动,点击一个条目,选项卡进入焦点或调整窗口/视图的大小,标题就会卡入到位(参见第二个屏幕截图)。

根据开头发布的主题,我认为这是一个错误,因此我不仅要寻找解决方案(可能不存在),还要寻找解决方法。我试过了:

  • table.scrollTo()
  • table.scrollToColumnIndex()
  • table.layout()
  • table.requestFocus()
  • table.requestLayout()
  • table.refresh()

我知道并非所有这些都有意义,但我仍然尝试过,但没有一个使列标题与应用程序启动时的列相符。

欢迎提出任何建议。 我不觉得共享代码在这里有帮助,但是问你是否想要特定的东西。视图是使用SceneBuilder 8构建的,由一个AnchorPane,一个中间的TableView和6个TableColumns组成,没有别的。

非常感谢!

2 个答案:

答案 0 :(得分:4)

我遇到了同样的问题。这似乎是一个错误。试试这个。它对我有用

Platform.runLater(() -> tableView.refresh());

答案 1 :(得分:0)

我知道这是一条旧消息,但是我尝试了所有操作以使标头对齐,但直到我解决了该问题,一切都没有起作用。然后,我尝试了一下,它奏效了。标头会跳,但我可以接受。我希望这对其他人有帮助。

const { src, dest } = require("gulp"),
    gulpIf = require('gulp-if'),
    gap = require('gulp-append-prepend'),
    sourcemaps = require("gulp-sourcemaps");

const {isProduction} = require('../common/utils');

function rollup(){
    const gulpRollup = require('gulp-better-rollup');

    // Rollup plugins
    const babel = require('./babel'),
        nodeResolve = require('@rollup/plugin-node-resolve'),
        terser = require('rollup-plugin-terser').terser,
        rootImport = require('rollup-plugin-root-import');

    const baseDir = `${process.cwd()}\\src\\js`;

    // Rollup Config
    const config = {
        plugins: [
            rootImport({root: baseDir,useInput: 'prepend'}),
            nodeResolve(),
            babel(),
            require('rollup-plugin-cleanup')(),
        ]
    };

    const outputConfig = {    
        format: 'iife',
        plugins: [isProduction && terser()],
    };

    return gulpRollup(config,outputConfig);
};

module.exports = function js(browserSync){
    return src([
        // Ref: https://stackoverflow.com/a/35413106
        `src/js/**/!(_)*.js`, // select all js files not starting with _
        `!src/js/**/_*`, // exclude all folder starting with _
        `!src/js/**/_*/**/*` //exclude files/subfolders in folders starting with '_' 
    ])
        .pipe(gap.prependText('import "/../../node_modules/zepto/dist/zepto.min.js"'))  // This transformation is ignored by gulp-better-rollup.
        .pipe(gulpIf(!isProduction, sourcemaps.init()))
        .pipe(rollup())
        .pipe(gulpIf(!isProduction, sourcemaps.write(".")))
        .pipe(dest("assets/js"))    // Outputs each file separately.
        .pipe(gulpIf(!isProduction, browserSync.stream()));
};