JavaFX Button auf Controller Funktion zeigen?

Ich will einen Taschenrechner programmieren. Backend logik ist soweit vorhanden, fehlt nur das GUI

Ich dachte mir, dass ich eine Klasse mache, wo ich das GridPane extende und im Konstruktor die buttons adde.

So sieht das etwa aus:

public class FXPane extends GridPane {
    private String[][] buttonTexts = {
            {"7", "8", "9", "(", ")", "BS"},
            {"4", "5", "6", "+", "-", "CE"},
            {"1", "2", "3", "*", "/", "C"},
            {"±", "0", ",", "x^y", "1/x", "="}
    };

    FXPane() {
        for(int y = 0; y < buttonTexts.length;y++){
            for(int x = 0; x<buttonTexts[0].length;x++){
                Button theButtonToAdd = new Button(buttonTexts[y][x]);
                theButtonToAdd.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);
                this.add(theButtonToAdd,x,y);
            }
        }
    }
}

Der Controller sieht so aus:

public class Controller {
    @FXML
    private Label fxDisplay;
    @FXML
    private GridPane fxGrid;

    private FXPane buttonPane = new FXPane();

    // called by the FXML loader after the labels declared above are injected:
    public void initialize() {
        fxDisplay.setText("asd");
        fxGrid.add(buttonPane,0,0);
    }
}

Die Namen und der Hack über 2 Gridpanes änder ich noch, geht aber derzeit eher POC, da es das erste mal mit JavaFX ist.

Mein Plan ist, dass die Buttons auf eine Funktion aus dem Controller zeigt bzw aufruft.

Nur ist das vermutlich nicht (schön) möglich. Gibts ne bessere Variante oder ist das der einzige Weg?

Der Plan war, dass der Controller die Taschenrechner Instanz besitzt und jeder Button dann die eingabe an die Taschenrechner Instanz gibt. Nur brauche ich dafür halt noch ein übersetzer, damit der jeweilige Button die jeweilige Eingabe in den Taschenrechner gibt.

Ich könnte natürlich die Controller Instanz per this dem Konstruktor übergeben und dann in FXPane speichern. Nur ist das gut?

Computer, Technik, programmieren, Java, JavaFX, Technologie, GUI
Spigot 1.16.5 Gui funzt einfach nicht was tun?

Hey ich habe dieses gui für mein plugin geschrieben an sich funktioniert der inventory teil aber das if statement will einfach nicht ich habe mehrere guis im plugin die genau gleich aufgebaut sind(den code auch schon einmal kopiert und in anderer funktion benutzt wo es ohne probleme fuktioniert hat. Es gibt keine Errors es öffnet sich einfach nicht.


	@SuppressWarnings("unlikely-arg-type")
	public void onClickKit(PlayerInteractEvent e) {
		Player p = e.getPlayer();
		try {
			if (p.getInventory().getItemInMainHand().equals(Material.CHEST)) {
					Inventory Stats = Bukkit.createInventory(null, InventoryType.DISPENSER, "§9§lKits");
					(new Methods()).setPlaceholder(Stats);
					ItemStack Item1 = new ItemStack(Material.SANDSTONE, 32);
					ItemMeta meta1 = Item1.getItemMeta();
					meta1.setDisplayName("§8➟ §6Sandstone");
					List<String> lore1 = new ArrayList<String>();
					lore1.add("You can run, but you can't hide...");
					meta1.setLore(lore1);
					Item1.setItemMeta(meta1);


					ItemStack Item2 = new ItemStack(Material.BOW, 1);
					ItemMeta meta2 = Item2.getItemMeta();
					meta2.setDisplayName("§8➟ §2Sniper");
					List<String> lore2 = new ArrayList<String>();
					lore2.add("");
					meta2.setLore(lore2);
					meta2.addEnchant(Enchantment.ARROW_KNOCKBACK, 2, true);
					Item2.setItemMeta(meta2);


					ItemStack Item3 = new ItemStack(Material.SNOWBALL);
					ItemMeta meta3 = Item3.getItemMeta();
					meta3.setDisplayName("§8➟ §fSnowman");
					List<String> lore3 = new ArrayList<String>();
					lore3.add("§3Keep your Enemies on Distance.");
					meta3.setLore(lore3);
					Item3.setItemMeta(meta3);


					Stats.setItem(0, Item1);
					Stats.setItem(4, Item2);
					Stats.setItem(8, Item3);
					p.openInventory(Stats);
					p.playSound(p.getLocation(), Sound.BLOCK_NOTE_BLOCK_BELL, 2.0F, 1.0F);
				}
		} catch (Exception exception) {


		}
	}

LG

Computer, programmieren, Java, Minecraft, Minecraft Server, GUI, Spigot, Minecraft Plugin

Meistgelesene Beiträge zum Thema GUI