JavaFX按钮背景图像

时间:2015-05-01 09:08:56

标签: image button background javafx

我在JavaFX中的按钮上设置backgroundImage时遇到问题。

Image newGame = new Image("File:/CSS/nova_hra.png");
BackgroundImage newGameBgr = new BackgroundImage(newGame, null, null, null, null);

Button buttonNewGame = new Button("Nová Hra");
Button buttonLoadGame = new Button("Načíst Hru");
Button buttonStatistics = new Button("Statistiky");
Button buttonExit = new Button("Konec");

buttonNewGame.setGraphic(new ImageView(newGame));
//buttonNewGame.setBackground(new Background(newGameBgr));

buttonExit.setMinHeight(40);
buttonLoadGame.setMinHeight(40);
buttonNewGame.setMinHeight(40);
buttonStatistics.setMinHeight(40);

buttonExit.setMinWidth(120);
buttonLoadGame.setMinWidth(120);
buttonNewGame.setMinWidth(120);
buttonStatistics.setMinWidth(120);

这对buttonNewGame没有任何作用。每次我尝试使用此

加载图像
Image image = new Image(getClass().getResourceAsStream("a.png"));

我遇到了runTime异常。我用的时候

Image image = new Image(getClass().getResourceAsStream("a.png"));

整个图像都没有了。

1 个答案:

答案 0 :(得分:7)

你可以通过css完成。如果您的background.jpg正在进行包测试,请执行以下操作:

    package testing;

    import javafx.application.Application;
    import javafx.scene.Scene;
    import javafx.scene.control.Button;
    import javafx.scene.layout.Pane;
    import javafx.stage.Stage;

    public class Main extends Application {

        @Override
        public void start(Stage primaryStage) {

            try {

                Pane root = new Pane();

                Button button = new Button( "Click me!");
                button.setStyle("-fx-background-image: url('/testing/background.jpg')");

                root.getChildren().add(button);

                Scene scene = new Scene(root, 800, 400);
                primaryStage.setScene(scene);
                primaryStage.show();

            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        public static void main(String[] args) {
            launch(args);
        }
    }

如果您不想使用css,可以这样做:

        BackgroundImage backgroundImage = new BackgroundImage( new Image( getClass().getResource("/testing/background.jpg").toExternalForm()), BackgroundRepeat.NO_REPEAT, BackgroundRepeat.NO_REPEAT, BackgroundPosition.DEFAULT, BackgroundSize.DEFAULT);
        Background background = new Background(backgroundImage);

        Button button = new Button( "Click me!");
        button.setBackground(background);