1

我们可以通过拖动表格标题中的列分隔符来调整列宽。这是 TableView 类的内置功能。

通常,光标将变为东调整大小(或西调整大小)类型,将光标定位在列标题的右侧。

但是,如果我将 JavaFX 集成到 Swing 应用程序中,我发现光标在同一位置仍然是默认类型。也就是将 TableView 添加到 Scene,然后将此 Scene 添加到 JFXPanel,最后将此 JFXPanel 添加到 JFrame。

示例代码如下:

public class Run extends JFrame {

    Run() {
        setSize(600, 450);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        initComponents();
    }

    private void initComponents() {
        final JFXPanel fxPanel = new JFXPanel();
        this.getContentPane().add(fxPanel);
        Platform.runLater(new Runnable() {
            @Override
            public void run() {
                initFX(fxPanel);
            }
        });
    }

    private void initFX(JFXPanel fxPanel) {
        Scene scene = null;
        try {
            scene = FXMLLoader.load(
                new File("res/fxml_example.fxml").toURI().toURL()
            );
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        fxPanel.setScene(scene);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new Run().setVisible(true);
            }
        });
    }
}

fxml_example.fxml:

<?import javafx.scene.Scene?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.control.TableColumn?>

<Scene xmlns:fx="http://javafx.com/fxml">
    <TableView fx:id="tableView"
               editable="true">
        <columns>
            <TableColumn text="COL1">
            </TableColumn>
            <TableColumn text="COL2">
            </TableColumn>
            <TableColumn text="COL3">
            </TableColumn>
            <TableColumn text="COL4">
            </TableColumn>
            <TableColumn text="COL5">
            </TableColumn>
        </columns>
    </TableView>
</Scene>

那么,有没有人可以建议如何修复这些代码?当将此 TableView 类添加到 Swing 应用程序时,使光标可以更改为东调整大小(或西调整大小)类型?

4

0 回答 0