用户单击按钮时在按钮上显示图像

时间:2020-05-25 10:38:42

标签: java image javafx gridview

当用户单击按钮时,我试图将图像放置在按钮上。该按钮以类似类型的按钮布置在网格布局中。问题是我不知道为什么按钮会被调整大小。

这是我Controller.java的一部分

        //box row where button is clicked
        int row = GridPane.getRowIndex((Node) actionEvent.getSource());
        //box column where button is clicked
        int column = GridPane.getColumnIndex((Node) actionEvent.getSource());
        if (grid.markGrid(row, column, playerPlaying))
        {
            //set mark on the Button
            Image mark;
            if (playerPlaying == Player.PLAYER1)
                mark = new Image(getClass().getResourceAsStream("x.png"));
            else
                mark = new Image(getClass().getResourceAsStream("circle.png"));
            Button buttonClicked = (Button) actionEvent.getSource();
            ImageView imageView = new ImageView(mark);
            imageView.setFitHeight(buttonClicked.getHeight());  
            imageView.setFitWidth(buttonClicked.getWidth());
            buttonClicked.setGraphic(imageView);

这是我的fxml文件的一部分

   <GridPane fx:id="buttonsGrid">
        <columnConstraints>
            <ColumnConstraints hgrow="ALWAYS"/>
            <ColumnConstraints hgrow="ALWAYS"/>
            <ColumnConstraints hgrow="ALWAYS
        </columnConstraints>
        <rowConstraints>
            <RowConstraints vgrow="ALWAYS"/>
            <RowConstraints vgrow="ALWAYS"/>
            <RowConstraints vgrow="ALWAYS"/>
        </rowConstraints>
        <Button mnemonicParsing="false" GridPane.rowIndex="0" GridPane.columnIndex="0" styleClass="grid-button"
                prefWidth="150" prefHeight="150" maxHeight="Infinity" maxWidth="Infinity"
                onAction="#gridClick" GridPane.valignment="CENTER" GridPane.halignment="CENTER"/>
        <Button mnemonicParsing="false" GridPane.rowIndex="0" GridPane.columnIndex="1" styleClass="grid-button"
                prefWidth="150" prefHeight="150" maxHeight="Infinity" maxWidth="Infinity"
                onAction="#gridClick" GridPane.valignment="CENTER" GridPane.halignment="CENTER"/>
        <Button mnemonicParsing="false" GridPane.rowIndex="0" GridPane.columnIndex="2" styleClass="grid-button"
                prefWidth="150" prefHeight="150" maxHeight="Infinity" maxWidth="Infinity"
                onAction="#gridClick" GridPane.valignment="CENTER" GridPane.halignment="CENTER"/>
        <Button mnemonicParsing="false" GridPane.rowIndex="1" GridPane.columnIndex="0" styleClass="grid-button"
                prefWidth="150" prefHeight="150" maxHeight="Infinity" maxWidth="Infinity"
                onAction="#gridClick" GridPane.valignment="CENTER" GridPane.halignment="CENTER"/>
        <Button mnemonicParsing="false" GridPane.rowIndex="1" GridPane.columnIndex="1" styleClass="grid-button"
                prefWidth="150" prefHeight="150" maxHeight="Infinity" maxWidth="Infinity"
                onAction="#gridClick" GridPane.valignment="CENTER" GridPane.halignment="CENTER"/>
        <Button mnemonicParsing="false" GridPane.rowIndex="1" GridPane.columnIndex="2" styleClass="grid-button"
                prefWidth="150" prefHeight="150" maxHeight="Infinity" maxWidth="Infinity"
                onAction="#gridClick" GridPane.valignment="CENTER" GridPane.halignment="CENTER"/>
        <Button mnemonicParsing="false" GridPane.rowIndex="2" GridPane.columnIndex="0" styleClass="grid-button"
                prefWidth="150" prefHeight="150" maxHeight="Infinity" maxWidth="Infinity"
                onAction="#gridClick" GridPane.valignment="CENTER" GridPane.halignment="CENTER"/>
        <Button mnemonicParsing="false" GridPane.rowIndex="2" GridPane.columnIndex="1" styleClass="grid-button"
                prefWidth="150" prefHeight="150" maxHeight="Infinity" maxWidth="Infinity"
                onAction="#gridClick" GridPane.valignment="CENTER" GridPane.halignment="CENTER"/>
        <Button mnemonicParsing="false" GridPane.rowIndex="2" GridPane.columnIndex="2" styleClass="grid-button"
                prefWidth="150" prefHeight="150" maxHeight="Infinity" maxWidth="Infinity"
                onAction="#gridClick" GridPane.valignment="CENTER" GridPane.halignment="CENTER"/>
    </GridPane>

这是调整后的网格的图像

0 个答案:

没有答案
相关问题