我使用GridPane作为n×m矩阵,我需要能够调整水平条的大小。
我有一个我作为GridPane的孩子添加的Circle,我有一个动作监听器,它允许我调整水平条的大小,并且它正常工作。
我正在使用
int col = GridPane.getColumnIndex(dragAnchor);
获取锚所在的索引,然后我调用:
GridPane.setColumnIndex(dragAnchor, newCol);
(其中newCol是返回值+/- 1,具体取决于我是增大还是减小尺寸)。
当我这样做时,Circle节点不会在gridPane上移动,返回的col也是正确的位置。移动已经添加到GridPane的节点还有其他必须做的事情吗?
答案 0 :(得分:1)
正如预期的那样没有问题。由于gridpane的空列(单元格)的宽度为0,因此您可能无法在应用中观察到“移动”。要调试可视化将gridLinesVisible设置为true并添加一些行/列约束。请参阅以下示例:
@Override
public void start( Stage stage )
{
GridPane gp = new GridPane();
Label l = new Label( "before" );
Button b = new Button( "move" );
b.setOnAction( ( e ) ->
{
int i = GridPane.getColumnIndex( l );
System.out.println( "i = " + i );
l.setText( "after" );
GridPane.setColumnIndex( l, 2 );
} );
gp.add( l, 0, 0 );
gp.add( b, 1, 1 );
gp.setGridLinesVisible( true );
gp.getColumnConstraints().addAll( new ColumnConstraints( 70 ), new ColumnConstraints( 70 ), new ColumnConstraints( 70 ) );
final Scene scene = new Scene( gp, 400, 300 );
stage.setScene( scene );
stage.show();
}