如何在javafx中从另一个窗口显示图像?

时间:2017-11-05 08:10:56

标签: java javafx imageview

我想让用户使用按钮进入下一个窗口。然后,此按钮显示图像。但是,当我尝试运行程序时,我会抛出一个异常。这是我的代码:

    'items' => [
        'exclude' => 1,
        'label' => $ll . 'tx_trader_domain_model_object.floorplans',
        'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
            'items',
            [
                'appearance' => [
                    'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
                ],
                // custom configuration for displaying fields in the overlay/reference table
                // to use the itemsPalette and imageoverlayPalette instead of the basicoverlayPalette
                'foreign_types' => [
                    '0' => [
                        'showitem' => '
                            --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;itemsPalette,
                            --palette--;;imageoverlayPalette,
                            --palette--;;filePalette'
                    ],
                    \TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
                        'showitem' => '
                            --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;itemsPalette,
                            --palette--;;imageoverlayPalette,
                            --palette--;;filePalette'
                    ],
                    \TYPO3\CMS\Core\Resource\File::FILETYPE_APPLICATION => [
                        'showitem' => '
                            --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;itemsPalette,
                            --palette--;;imageoverlayPalette,
                            --palette--;;filePalette'
                    ]
               ]
           ],
           'gif,jpg,jpeg,png,pdf'
       ),

    ],

1 个答案:

答案 0 :(得分:2)

您有异常,因为您在其中添加了pane1

GridPane pane1 = new GridPane();
pane1.getChildren().addAll(pane1, btn);

我已经纠正了你的代码:

package matchingcards;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;

public class MatchingCards extends Application {

    Stage window;
    Scene start, game;

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

    @Override
    public void start(Stage primaryStage) throws Exception {

        window = primaryStage;

        // When user clicks start, program enters game
        Button btn = new Button("Start Game");

        btn.setOnAction(e -> window.setScene(game));

        // Create the display for start button
        GridPane pane1 = new GridPane();
        pane1.getChildren().addAll(btn);
        start = new Scene(pane1, 200, 200);

        // Create display for game
        GridPane pane2 = new GridPane();
        Image back = new
                Image(
                "https://i.pinimg.com/736x/c1/59/b4/c159b4738dae9c9d8d6417228024de8d--" +
                "playing - card - design - card - card.jpg",
                300, 200, false, false);
        pane2.getChildren().addAll(new ImageView(back));
        game = new Scene(pane2, 500, 500);

        window.setScene(start);
        window.setTitle("Matching Cards");
        window.show();
    }
}