Ich habe aus einem Tutorial diesesn Code
es laüft als Einzelanwendung. Ich fände es nun schick es in einem meiner Projekte einzufügen. Meine Projekte sind aber wohl der seltenen Sorte.
Um das in mein Fenster einzubauen habe ich die Komponenten mit scenebuilder eingerichtet. Deshalb gehe ich davon aus das ich die Befehle zum einrichten weg lassen kann. und den Rest in die Aktion Events verlageren kann. Aber leider funktionirt das nicht. Weder in der Main als auch im mainWindowController ergibt das etwas Sinnvolles. Ich bekomme die Listview aber keinen Inhalt.
Code:
package ccc;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.geometry.HPos;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.ColumnConstraints;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Priority;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
/*from w w w. j a va 2 s . co m*/
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
BorderPane root = new BorderPane();
Scene scene = new Scene(root, 400, 250, Color.WHITE);
GridPane gridpane = new GridPane();
gridpane.setPadding(new Insets(5));
gridpane.setHgap(10);
gridpane.setVgap(10);
ColumnConstraints column1 = new ColumnConstraints(150, 150,
Double.MAX_VALUE);
ColumnConstraints column2 = new ColumnConstraints(50);
ColumnConstraints column3 = new ColumnConstraints(150, 150,
Double.MAX_VALUE);
column1.setHgrow(Priority.ALWAYS);
column3.setHgrow(Priority.ALWAYS);
gridpane.getColumnConstraints().addAll(column1, column2, column3);
//canditates
final ObservableList<String> candidates = FXCollections
.observableArrayList("Z", "A", "B", "C", "D");
final ListView<String> candidatesListView = new ListView<>(candidates);
gridpane.add(candidatesListView, 0, 1);
final ObservableList<String> selected = FXCollections.observableArrayList();
final ListView<String> heroListView = new ListView<>(selected);
gridpane.add(heroListView, 2, 1);
Button sendRightButton = new Button(" > ");
sendRightButton.setOnAction((ActionEvent event) -> {
String potential = candidatesListView.getSelectionModel()
.getSelectedItem();
if (potential != null) {
candidatesListView.getSelectionModel().clearSelection();
candidates.remove(potential);
selected.add(potential);
}
});
Button sendLeftButton = new Button(" < ");
sendLeftButton.setOnAction((ActionEvent event) -> {
String s = heroListView.getSelectionModel().getSelectedItem();
if (s != null) {
heroListView.getSelectionModel().clearSelection();
selected.remove(s);
candidates.add(s);
}
});
VBox vbox = new VBox(5);
vbox.getChildren().addAll(sendRightButton, sendLeftButton);
gridpane.add(vbox, 1, 1);
root.setCenter(gridpane);
GridPane.setVgrow(root, Priority.ALWAYS);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Java:
package application5;
import java.io.IOException;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;
public class Main extends Application {
private Stage primaryStage;
public void start(Stage primaryStage){
this.primaryStage =primaryStage;
mainWindow();
}
public void mainWindow(){
try{
FXMLLoader loader = new FXMLLoader(Main.class.getResource("MainWindow.fxml"));
AnchorPane pane =loader.load();
primaryStage.setMinHeight(400.00);
primaryStage.setMinWidth(400.00);
MainWindowController mainWindowController = loader.getController();
mainWindowController.setMain(this);
Scene scene=new Scene(pane);
primaryStage.setScene(scene);
primaryStage.show();
}
Java:
package application5;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.control.TextArea;
import javafx.scene.layout.GridPane;
public class MainWindowController {
public Main main;
public void setMain(Main main){
this.main =main;}
@FXML
private GridPane gridpane;
@FXML
private Label selected;
@FXML
private Label Canditates;
@FXML
private Button sendLeftButton;
@FXML
private Button sendRightButton;
@FXML
private ListView heroListView;
@FXML
private ListView candidatesListView;
@FXML
private TextArea lesenText;
@FXML
private TextArea schreibenText;
@FXML
private Button lesebut;
@FXML
private Button schreibbut;
@FXML
private Label label;
@FXML
private Button speichbut;
@FXML
private ListView myliste;
@FXML
void actButLeft(ActionEvent event){
}
@FXML
void actButRight(ActionEvent event) {
}
@FXML
void kk1(ActionEvent event) {
}
@FXML
void kk2(ActionEvent event) {
}
@FXML
void LeseBut(ActionEvent event) {
}
@FXML
void OnMouseclicketlist(ActionEvent event ){
myliste.getOnMouseClicked();
System.out.println(schreibenText);
}
@FXML
void SpeichBut(ActionEvent event) throws java.io.FileNotFoundException {
String dateiText =schreibenText.getText();//die TextArea id für die Eingabe nennt sich schreibenText
lesenText.appendText(dateiText);//derButton Speicherbut löst das lesed aus schreibtext aus und überträgt nach Textarea LesenText
PrintWriter pWriter = null;
try {System.out.println ("geklickt");
pWriter = new PrintWriter(new BufferedWriter(new FileWriter("\\C:\\test.txt")));
pWriter.println(dateiText);// das zuletzt ausgelesene dateiText wird in die Datei test.txt geschrieben
} catch (IOException ioe) {
ioe.printStackTrace();
} finally {
if (pWriter != null){
pWriter.flush();
pWriter.close();
}
}
}
@FXML
void SchreiBut(ActionEvent event) {
System.out.print("bot gedrückt");
String leo = lesenText.getText();
schreibenText.appendText(leo);
}}
Code:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.*?>
<?import java.lang.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane cache="true" cacheHint="QUALITY" prefHeight="617.0" prefWidth="900.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application5.MainWindowController">
<!-- TODO Add Nodes -->
<children>
<HBox prefHeight="584.0" prefWidth="692.0">
<children>
<VBox prefHeight="584.0" prefWidth="398.0">
<children>
<GridPane fx:id="gridpane" prefHeight="584.0" prefWidth="5.0" VBox.vgrow="ALWAYS">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="198.0" minWidth="10.0" prefWidth="183.0" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="140.0" minWidth="10.0" prefWidth="36.0" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="196.0" minWidth="10.0" prefWidth="179.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints maxHeight="190.0" minHeight="0.0" prefHeight="0.0" vgrow="SOMETIMES" />
<RowConstraints maxHeight="390.0" minHeight="10.0" prefHeight="390.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<VBox prefHeight="200.0" prefWidth="100.0" GridPane.columnIndex="1" GridPane.rowIndex="1">
<children>
<Button fx:id="sendLeftButton" mnemonicParsing="false" onAction="#actButLeft" text="<" />
<Button fx:id="sendRightButton" mnemonicParsing="false" onAction="#actButRight" text=">">
<VBox.margin>
<Insets top="20.0" />
</VBox.margin>
</Button>
</children>
</VBox>
<Label fx:id="canditates" text="Canditates" />
<Label fx:id="selected" text="selected" GridPane.columnIndex="2" />
<ListView fx:id="candidatesListView" onEditStart="#kk1" prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="1" />
<ListView fx:id="heroListView" onEditStart="#kk2" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2" GridPane.rowIndex="1" />
</children>
<VBox.margin>
<Insets />
</VBox.margin>
</GridPane>
</children>
</VBox>
<VBox id="VBox" alignment="CENTER" prefHeight="584.0" prefWidth="256.0" spacing="5.0">
<children>
<ListView fx:id="myliste" onMouseClicked="#OnMouseclicketlist" prefHeight="200.0" prefWidth="200.0" />
<TextArea fx:id="lesenText" prefHeight="115.0" prefWidth="500.0" />
<TextArea fx:id="schreibenText" prefHeight="124.0" prefWidth="500.0" />
<Label fx:id="label" alignment="CENTER" prefHeight="15.0" prefWidth="99.0" text="Label" />
<Button fx:id="lesebut" blendMode="GREEN" cache="true" cacheHint="QUALITY" mnemonicParsing="false" onAction="#LeseBut" text="lesen" textOverrun="WORD_ELLIPSIS" />
<Button fx:id="speichbut" blendMode="GREEN" cache="true" cacheHint="QUALITY" mnemonicParsing="false" onAction="#SpeichBut" text="speichern" />
<Button fx:id="schreibbut" mnemonicParsingich die Befehle="false" onAction="#SchreiBut" text="schreiben" />
</children>
</VBox>
</children>
</HBox>
</children>
</AnchorPane>