gpt4 book ai didi

JavaFX - 使用字符输入定位图像

转载 作者:行者123 更新时间:2023-12-02 09:55:24 24 4
gpt4 key购买 nike

我有一个 GUI,它接受图像名称的输入,一旦按下刷新按钮,它就会显示在固定位置。我希望能够输入一个字符“A-G”来更改图像的 X 位置,以及一个字符“0-6”来更改图像的 Y 位置。图像的名称只是“A1”、“A2”...“A5”。因此,如果用户输入“A1B3”,它将在 X 位置“B”和 Y 位置“3”显示图像 A1。因此 B 可能是 200,3 可能是 300,这使得 (X,Y) 坐标为 (200,300)。

这是我的代码,用于获取用户输入的图像。

private void getImage(){
Image img = new Image("comp1110/ass2/gui/assets/" + textField.getText() + ".png", 100, 100, false, false);

ImageView image = new ImageView();
image.setImage(img);
image.setX(100);
image.setY(100);
pane.getChildren().add(image);
}

最佳答案

我认为你应该做一些类似的事情,是的,你需要解决一些外观问题。但这只是为了让您知道该怎么做。它使用网格 Pane ,因此您不必担心获取精确坐标,我选择了垂直盒子,因此我不必担心布局,您可以保留您拥有的 Pane ,它不会产生任何影响。

public class Main extends Application {

private GridPane gridPane;
private TextField imageTextField = new TextField();
private HashMap<String,String> hashMap = new HashMap<>();

@Override
public void start(Stage primaryStage) {
fillHashMapValues();

gridPane = new GridPane();
gridPane.setGridLinesVisible(true);
for (int i = 0; i < 7; i++) {
RowConstraints rowConstraints = new RowConstraints();
rowConstraints.setPercentHeight(14);
gridPane.getRowConstraints().add(rowConstraints);

ColumnConstraints columnConstraints = new ColumnConstraints();
columnConstraints.setPercentWidth(14);
gridPane.getColumnConstraints().add(columnConstraints);

gridPane.addColumn(i);
gridPane.addRow(i);
}

imageTextField.setPromptText("Enter Image Letters?");

TextField textField = new TextField();
textField.setPromptText("Enter Coordinates");

Button button = new Button("Go!");
button.setOnAction(event -> {
addToGridPane(textField.getText());
});

VBox vBox = new VBox();
vBox.setPrefSize(300, 300);
vBox.setAlignment(Pos.TOP_CENTER);
vBox.getChildren().addAll(imageTextField, textField, button, gridPane);

primaryStage.setScene(new Scene(vBox));
primaryStage.show();
button.requestFocus();//This is only so you can see the prompt text its irrelevant
}

private void fillHashMapValues(){
hashMap.put("A", "1");
hashMap.put("B", "2");
hashMap.put("C", "3");
hashMap.put("D", "4");
hashMap.put("E", "5");
hashMap.put("F", "6");
hashMap.put("G", "7");
}

private void addToGridPane(String string){
char[] chars = string.toCharArray();
if(chars.length==2){//Do more data validation here
if(hashMap.containsKey(String.valueOf(chars[0]))) {
int xValue = Integer.parseInt(hashMap.get(String.valueOf(chars[0])));
int yValue = Integer.parseInt(String.valueOf(chars[1]));

ImageView image = getImage();

gridPane.add(image, xValue, yValue);
}
}
}

private ImageView getImage(){
Image image = new Image("comp1110/ass2/gui/assets/" + imageTextField.getText() + ".png", 100, 100, false, false);

ImageView imageView = new ImageView();
imageView.setImage(image);
//imageView.setX(100);
//imageView.setY(100);
//pane.getChildren().add(image);
return imageView;
}

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

关于JavaFX - 使用字符输入定位图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56041006/

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