Hallo Leute.
Ich möchte gerne wenn ich einen Button in einer GUI zwei oder drei mal drücke, dass in der TableView die Anzahl der gedrückten Male ausgegeben wird.
Jedes mal wird eine neue Zeile hinzugefügt. Das möchte ich aber nicht.
Wie kann man es machen? Habe lange gesucht, aber leider nichts gefunden.
Würde mich sehr über eure Hilfe freuen.
Hier der Code den ich geschrieben habe:
Main.java
Controller.java
Product.java
Sample.fxml
Ich möchte gerne wenn ich einen Button in einer GUI zwei oder drei mal drücke, dass in der TableView die Anzahl der gedrückten Male ausgegeben wird.
Jedes mal wird eine neue Zeile hinzugefügt. Das möchte ich aber nicht.
Wie kann man es machen? Habe lange gesucht, aber leider nichts gefunden.
Würde mich sehr über eure Hilfe freuen.
Hier der Code den ich geschrieben habe:
Main.java
Java:
package sample;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
primaryStage.setTitle("Test");
primaryStage.setScene(new Scene(root, 530, 400));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Controller.java
Java:
package sample;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.*;
import javafx.scene.control.Button;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.VBox;
import java.net.URL;
import java.util.ResourceBundle;
public class Controller implements Initializable{
@FXML
private Button btn6;
@FXML
private Button btn7;
@FXML
private Button btn4;
@FXML
private Button btn5;
@FXML
private Button btn2;
@FXML
private Button btn3;
@FXML
private TableColumn<Product, Integer> mengeColumn;
@FXML
private VBox box;
@FXML
private Button btn1;
@FXML
private TableView<Product> table;
@FXML
private TableColumn<Product, String> btnColumn;
final ObservableList<Product> product = FXCollections.observableArrayList();
@Override
public void initialize(URL location, ResourceBundle resources) {
mengeColumn.setCellValueFactory(new PropertyValueFactory<>("menge"));
btnColumn.setCellValueFactory(new PropertyValueFactory<>("clicked"));
table.setItems(product);
}
@FXML
void btn1Click(ActionEvent event) {
product.add(new Product(1, ((Button)event.getSource()).getText()));
}
@FXML
void btn2Click(ActionEvent event) {
product.add(new Product(1, ((Button)event.getSource()).getText()));
}
@FXML
void btn3Click(ActionEvent event) {
product.add(new Product(1, ((Button)event.getSource()).getText()));
}
@FXML
void btn4Click(ActionEvent event) {
product.add(new Product(1, ((Button)event.getSource()).getText()));
}
@FXML
void btn5Click(ActionEvent event) {
product.add(new Product(1, ((Button)event.getSource()).getText()));
}
@FXML
void btn6Click(ActionEvent event) {
product.add(new Product(1, ((Button)event.getSource()).getText()));
}
@FXML
void btn7Click(ActionEvent event) {
product.add(new Product(1, ((Button)event.getSource()).getText()));
}
}
Product.java
Java:
package sample;
public class Product {
private int menge;
private String clicked;
public Product() {
this.menge = 0;
this.clicked = "";
}
public Product(int menge, String clicked) {
this.menge = menge;
this.clicked = clicked;
}
public int getMenge() {
return menge;
}
public void setMenge(int menge) {
this.menge = menge;
}
public String getClicked() {
return clicked;
}
public void setClicked(String clicked) {
this.clicked = clicked;
}
}
Sample.fxml
Java:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="530.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller">
<children>
<VBox fx:id="box" layoutX="14.0" layoutY="14.0" prefHeight="200.0" prefWidth="150.0" spacing="5.0" AnchorPane.bottomAnchor="20.0" AnchorPane.leftAnchor="14.0" AnchorPane.topAnchor="20.0">
<children>
<Button fx:id="btn1" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#btn1Click" prefHeight="50.0" text="Button 1" />
<Button fx:id="btn2" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#btn2Click" prefHeight="50.0" text="Button 2" />
<Button fx:id="btn3" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#btn3Click" prefHeight="50.0" text="Button 3" />
<Button fx:id="btn4" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#btn4Click" prefHeight="50.0" text="Button 4" />
<Button fx:id="btn5" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#btn5Click" prefHeight="50.0" text="Button 5" />
<Button fx:id="btn6" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#btn6Click" prefHeight="50.0" text="Button 6" />
<Button fx:id="btn7" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#btn7Click" prefHeight="50.0" text="Button 7" />
</children>
</VBox>
<TableView fx:id="table" layoutX="200.0" layoutY="20.0" prefHeight="360.0" prefWidth="300.0" AnchorPane.bottomAnchor="20.0" AnchorPane.rightAnchor="20.0" AnchorPane.topAnchor="20.0">
<columns>
<TableColumn fx:id="mengeColumn" prefWidth="86.0" text="Menge" />
<TableColumn fx:id="btnColumn" prefWidth="213.0" text="Button Click" />
</columns>
</TableView>
</children>
</AnchorPane>
Zuletzt bearbeitet von einem Moderator: