gpt4 book ai didi

JavaFX 显示来自其他类数组的 ImageView

转载 作者:行者123 更新时间:2023-12-01 09:14:11 26 4
gpt4 key购买 nike

我已经将最小代码库设置为可传递的,希望它能有所帮助,例如您可以在构造函数 BufferedImage.getSubImage 的第 2 类中根据需要使用随机 PNG 图像文件,仅从 1 个文件中获取所有需要的图像并添加每个 BufferedImage转换为 ImageView,将其分配给最多 32 个数组:)

第 1 类:

import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.effect.DropShadow;
import javafx.scene.effect.GaussianBlur;
import javafx.scene.effect.Glow;
import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class Game extends Application{
private GameMenu gameMenu;

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

Pane root = new Pane();
root.setPrefSize(1600,900);
primaryStage.setResizable(false); // resize okna = false
primaryStage.show(); // kebyze to nemame mame hnusne biele okraje xD

this.gameMenu = new GameMenu();
this.gameMenu.setVisible(true);

root.getChildren().addAll(this.gameMenu);

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


} // End start

private class GameMenu extends Parent {
public GameMenu() throws Exception {
BalikKariet m = new BalikKariet();
VBox menu0 = new VBox(15);
menu0.setTranslateX(650);
menu0.setTranslateY(300);

GameMenuCSS btn1 = new GameMenuCSS("Random Text");
btn1.setOnMouseClicked(event -> {
getChildren().addAll(m.zoberKartu().getObrazok());
});

menu0.getChildren().addAll(btn1);
getChildren().addAll(menu0);
} // End Const.



} // End GameMenu

public static class GameMenuCSS extends StackPane {
private Text text;

public GameMenuCSS(String text) {
this.text = new Text(text);
this.text.setFont(this.text.getFont().font(20));
this.text.setFill(Color.WHITE);
Rectangle bg = new Rectangle(250,30);
bg.setOpacity(0.6);
bg.setFill(Color.BLACK);

GaussianBlur blur = new GaussianBlur(3.5);
bg.setEffect(blur);

setAlignment(Pos.CENTER);
setRotate(-0.5);
getChildren().addAll(bg, this.text);

setOnMouseEntered(event -> {
bg.setTranslateX(10);
this.text.setTranslateX(10);
bg.setFill(Color.WHITE);
this.text.setFill(Color.BLACK);
});

setOnMouseExited(event -> {
bg.setTranslateX(0);
this.text.setTranslateX(0);
bg.setFill(Color.BLACK);
this.text.setFill(Color.WHITE);
});

DropShadow drop = new DropShadow(50, Color.WHITE);
drop.setInput(new Glow());

setOnMousePressed(event -> setEffect(drop));
setOnMouseReleased(event -> setEffect(null));

} // koniec konstruktora
} // koniec Triedy MenuPolosky



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

}
}

第二类:

package com.sayky.test;

import javafx.embed.swing.SwingFXUtils;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

public class BalikKariet {
private Karta[] balik;
private int dalsiaKarta; // index nasledujucej karty
private ImageView imgViwVsetkyKarty;
private ImageView tempImageViewObrazokKarty;

public BalikKariet() throws IOException {
int[] hodnota = {7, 8, 9, 10, 11, 12, 13, 14};
String[] typKariet = {"7","8","9","10","Dolek","Horek","Kral","Eso"};
String[] farbay = {"Zelen","Cervem","Gula","Zalud"};

balik = new Karta[32];
dalsiaKarta = 0;

final int sirka = 74;
final int vyska = 120;
final int riadky = 4;
final int stlpec = 8;

BufferedImage vssetkyKartyObrazok = ImageIO.read(new File("res/img/vsetkyKarty.png"));
Image imgVsetkyKarty = SwingFXUtils.toFXImage(vssetkyKartyObrazok, null);
imgViwVsetkyKarty = new ImageView(imgVsetkyKarty);
BufferedImage tempObrazokKarty;


for (int farba = 0; farba < 4 ; farba++){
for (int typKarty = 0; typKarty < 8; typKarty++){
//ukaz obrazok
tempObrazokKarty = vssetkyKartyObrazok.getSubimage(
typKarty*sirka, // zaciatok x suradnic
farba*vyska, // zaciatok y sura dnic
sirka, // sirka
vyska); // vyska
balik[(typKarty + (farba*8))] = new Karta(
farbay[farba], // zavola Farby Array aby nadobudla meno Farba
typKariet[typKarty],
typKarty+7, // pozicia 0+7 je 7 zacina na hodnote prvej karty
tempImageViewObrazokKarty);
Image tempImgObrazokKarty = SwingFXUtils.toFXImage(tempObrazokKarty, null);
tempImageViewObrazokKarty = new ImageView(tempImgObrazokKarty);
}
}

} // koniec konstruktora

public Karta zoberKartu(){
if ( dalsiaKarta< balik.length) {
return balik[dalsiaKarta++];
} else {
return null;
}
}

}//科涅克优雅

第 3 类:

package com.sayky.test;

import javafx.scene.image.ImageView;

public class Karta {
private String typkarty; // cislo karty
private String farba; // telo
private int hodnota; // hodnota karty
private ImageView kartaObrazok;
/**
* Konstruktor pre PexesovaKarta triedu bude obsahovat toto ( pre lepsiu orientaciu )
* @param farba -suit- "Zelen" "Cerven" "Gula" "Zalud"
* @param typkarty -face- = 7, 8, 9, 10, Dolek, Horek, Kral, Eso;
* @param hodnota = 7, 8, 9, 10, 11-dolek, 12-horek, 13-kral, 14-eso;
*/
public Karta(String farba, String typkarty, int hodnota, ImageView kartaObrazok) {
// nastavenie hodnot lokalnich premien do globalnich
this.farba = farba;
this.typkarty = typkarty;
this.hodnota = hodnota;
}
public String toString(){
return typkarty + " " + farba;
}

public int getHodnotaKarty(){
return hodnota;
}
public Karta getKarta() {
return this;
}
public ImageView getObrazok() {
return kartaObrazok;
}
}

最佳答案

Karta 类从不初始化 kartaObrazok 字段,因此 getObrazok() 返回 null。

关于JavaFX 显示来自其他类数组的 ImageView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40694185/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com