我正在尝试调整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>
答案 0 :(得分:3)
由于您的Button位于AnchorPane
并且您设置了左右锚点,因此宽度将由这些锚点控制,而不是由prefWidth
属性控制。如果您希望能够动态调整控件的大小,AnchorPane
可能不是最好的方法,但您可以这样做
AnchorPane.setRightAnchor(url, AnchorPane.getRightAnchor(url)+110);