在网上搜索此问题的最后几个小时后,我决定需要你的帮助。
此问题与此主题类似:Javafx: Tableview header is not aligned with rows
那里没有提供答案,而且我认为,我的情况略有不同:
我有一个正确设置的TableView,包含重用的CellFactories和CellValueFactories。数据方面,一切都按照我的意图100%工作。然而,一旦我用更多的行填充我的表,我的视图可以显示它自然开始显示垂直滚动条。从那一刻开始(参见第一个屏幕截图),列标题不再与列对齐。它似乎正好是滚动条的宽度扭曲了宽度分布(我使用带有几个固定宽度列的ConstraintResizePolicy,其余的依赖于计算的宽度,再次,否则无法正常工作)。
只要我使用鼠标滚轮滚动,点击一个条目,选项卡进入焦点或调整窗口/视图的大小,标题就会卡入到位(参见第二个屏幕截图)。
根据开头发布的主题,我认为这是一个错误,因此我不仅要寻找解决方案(可能不存在),还要寻找解决方法。我试过了:
我知道并非所有这些都有意义,但我仍然尝试过,但没有一个使列标题与应用程序启动时的列相符。
欢迎提出任何建议。 我不觉得共享代码在这里有帮助,但是问你是否想要特定的东西。视图是使用SceneBuilder 8构建的,由一个AnchorPane,一个中间的TableView和6个TableColumns组成,没有别的。
非常感谢!
答案 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()));
};