gpt4 book ai didi

java - 从列表中获取选定的项目

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

我当前正在创建一个库存系统,用户将从列表中选择一个项目,右侧的图标将根据用户选择的项目进行更新。

我需要一种方法来获取用户当前选择的列表项。然后,我需要使用该列表项来显示用户将看到的图标。

目前我已经尝试在库存列表上使用 getSelected() 方法,该方法似乎只返回列表中的第一项。我需要一种方法来获取用户当前选择的项目。

我需要在名为“库存”的列表中选择当前项目。

package com.sps.game.inventory;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input;
import com.badlogic.gdx.InputProcessor;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.scenes.scene2d.*;
import com.badlogic.gdx.scenes.scene2d.ui.*;

import com.badlogic.gdx.utils.viewport.FitViewport;
import com.badlogic.gdx.utils.viewport.Viewport;
import com.sps.game.controller.InventoryController;
import com.sps.game.controller.PlayerController;

public class PlayerInventory {
public Stage stage;
public SpriteBatch sb;
private Viewport viewport;

private Skin skin = new Skin(Gdx.files.internal("core/assets/pixthulhuui/pixthulhu-ui.json"));

private List<Item> inventory;
private List<Image> itemImages;

private InventoryController inventoryController;
private InputProcessor oldInput;


public PlayerInventory(SpriteBatch sb, PlayerController playerController) {
this.sb = sb;
viewport = new FitViewport(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), new OrthographicCamera());
stage = new Stage(viewport, sb);

inventoryController = new InventoryController();
inventory = inventoryController.getInventoryList();
itemImages = inventoryController.getImageList();
}

private void formatting() {
stage = new Stage();
Label inventoryLabel = new Label("Inventory", skin);
Label imageLabel = new Label("Item", skin);

Table table = new Table(skin);
table.setDebug(true);
table.defaults();
table.center();
table.setFillParent(true);
table.add(inventoryLabel);
table.add(imageLabel);
table.row();


table.add(inventory); //need a way to get the current item selected
table.add(itemImages.getSelected());

stage.addActor(itemImages);
stage.addActor(table);
}
public void setInput() {
oldInput = Gdx.input.getInputProcessor(); //Get the old input from the user.
Gdx.input.setInputProcessor(stage); //Set the input to now work on the inventory.
}

public void update() {
if (Gdx.input.isKeyPressed(Input.Keys.I) && oldInput == null) {
formatting();
setInput();
}

if (Gdx.input.isKeyPressed(Input.Keys.O) && oldInput != null) {
stage.dispose();
Gdx.input.setInputProcessor(oldInput);
oldInput = null;
}
}

public void dispose() {
stage.dispose();
}

}

最佳答案

我通过使用 Clicklistener 找到了解决方案。

    inventory.addListener(new ClickListener() {
public void clicked(InputEvent event, float x, float y) {
String clickedItem = inventory.getSelected();
table.add(clickedItem);
System.out.println(item.getName());
}
});

关于java - 从列表中获取选定的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55087910/

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