OpenJFX TreeTableView rendering issue

111 views Asked by At

I was hoping there are other developers have similar issue that can share how to resolve this issue. I'm in the midst of using OpenJFX in one of my pet project. The project was tested on Oracle JDK 1.8 with JFX package included. When run on the Oracle 1.8 JDK, the TreeTableView show exactly as required:

enter image description here

Since Java 11 is required in my other workstation, the OpenJFX binary here is downloaded and installed. But the TreeTableView has become unreadable as followed:

enter image description here

Is there any JFX developer that has similar experiences?

FYI, I've tested with OpenJFX release 11.0.2, 15.0.1 and 16 all giving the same output.

Edit: It seems from the source behavior is as such as compile from source yield the same result.

Update: I should add my pet project is using JRuby and JRubyFX. Although not sure I don't think it is related to JRubyFX as the Oracle FX seems fine.

Thanks!

Regards

1

There are 1 answers

3
Slaw On BEST ANSWER

From your repository you have:

class WorkspaceCellFactory < javafx.scene.control.TreeTableCell
  include Antrapol::ToolRack::ExceptionUtils
  def updateItem(itm,e)
    super

    cont = nil
    if not itm.nil? 
      if itm.is_a?(TreeWorkspace) 
        if not_empty?(itm.workspace)
          cont = itm.workspace.path
        elsif not_empty?(itm.project)
          cont = itm.project
        else
          cont = itm
        end
      else
        cont = itm
      end
    end

    setGraphic(Text.new(cont))

  end
end

You're setting the graphic property to a javafx.scene.text.Text node. In the past, I believe I've had a similar issue when using graphics with TreeView / TreeTableView. You've confirmed that replacing:

setGraphic(Text.new(cont))

With:

setText(cont)

Solves the problem.


Bug in JavaFX

This appears to be a bug in JavaFX. Please submit a bug report, assuming one doesn't already exist, so that the developers know there's a problem and can fix it. The bug report should include a minimal reproducible example written in Java.