调整按钮上的TextField单击

时间:2014-05-12 18:56:03

标签: java javafx

我正在尝试调整TextField的大小,当startBtnClick被点击时,我似乎无法让它工作。基本上我想在单击按钮时按110个单位缩小字段。

行动事件:

@FXML
protected void startBtnClick(){
    double txtWidth = this.url.getWidth();
    this.url.setPrefWidth(txtWidth - 110);
}

XML:

<?xml version="1.0" encoding="UTF-8"?>
<AnchorPane fx:id="anchorPane" minHeight="200.0" minWidth="200.0" prefHeight="600.0" prefWidth="1200.0" styleClass="anchor-pane" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="phantom.FXMLDocumentController">
    <children>
        <Button id="beginSurfing" fx:id="quitSurfing" mnemonicParsing="false" onAction="#stopSurfing" prefHeight="29.0" prefWidth="93.00009999999747" text="Quit Surfing" visible="false" AnchorPane.rightAnchor="9.0" AnchorPane.topAnchor="8.0" />
        <GridPane prefHeight="600.0" prefWidth="1200.0" style="" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
            <children>
                <AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="0" GridPane.rowIndex="0">
                    <children>
                        <TextField fx:id="url" disable="false" onAction="#urlGo" opacity="1.0" prefWidth="965.0" scaleZ="1.0" style="" translateZ="0.0" AnchorPane.leftAnchor="122.0" AnchorPane.rightAnchor="113.0" AnchorPane.topAnchor="9.0">
                            <stylesheets>
                                <URL value="@../CSS/textField.css" />
                            </stylesheets>
                        </TextField>
                        <Button id="beginSurfing" fx:id="startSurfing" mnemonicParsing="false" onAction="#beginSurfing" prefHeight="29.0" prefWidth="93.00009999999747" text="Start Surfing" AnchorPane.rightAnchor="12.0" AnchorPane.topAnchor="9.0" />
                        <Label fx:id="timer" alignment="CENTER" contentDisplay="CENTER" prefHeight="29.0" prefWidth="94.0" text="" textAlignment="CENTER" underline="false" AnchorPane.rightAnchor="11.0" AnchorPane.topAnchor="9.0">
                            <font>
                                <Font name="System Bold" size="20.0" />
                            </font>
                        </Label>
                        <Button id="beginSurfing" fx:id="nextAdBtn" mnemonicParsing="false" onAction="#nextAd" prefHeight="30.000099999997474" prefWidth="94.0" text="Next Ad" visible="false" AnchorPane.rightAnchor="12.0" AnchorPane.topAnchor="8.0" />
                    </children>
                </AnchorPane>
                <!--
                    The rest of the gird
                    Chopped off for readability
                -->
            </children>
        </GridPane>
    </children>
</AnchorPane>

1 个答案:

答案 0 :(得分:3)

由于您的Button位于AnchorPane并且您设置了左右锚点,因此宽度将由这些锚点控制,而不是由prefWidth属性控制。如果您希望能够动态调整控件的大小,AnchorPane可能不是最好的方法,但您可以这样做

AnchorPane.setRightAnchor(url, AnchorPane.getRightAnchor(url)+110);