JavaFX TableView-Zellen sollen automatisch so groß wie der größte Inhalt sein

BigMemo007

Aktives Mitglied
Hallo Comunity,

ich habe eine TableView mit 3 Columns. Irgendwie wird aber eine 4. leere mitgeneriert, der mir Platz wegnimmt.

Meine Gui-Klasse mit den TableView- und Column-Objekten
Java:
package gui;


import conVar.CVMain;
import conVar.CVSubEdit;
import handler.ConEdit;
import javafx.geometry.Insets;
import javafx.geometry.Orientation;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ContentDisplay;
import javafx.scene.control.Separator;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.layout.VBox;
import javafx.scene.text.Text;
import util.BookingObj;
import util.MyTooltip;


public class GEdit {
    
    private BorderPane layout;
    private Scene sceneGEdit;
    private ConEdit conEdit;
    
    
    private Text txtInTV;
    private Text txtOutTV;

    private TableView<BookingObj> inTV;
    private TableColumn<BookingObj, String> inAccountCol;
    private TableColumn<BookingObj, String> inDateCol;
    private TableColumn<BookingObj, String> inAmountCol;
    
    private TableView<BookingObj> outTV;
    private TableColumn<BookingObj, String> outAccountCol;
    private TableColumn<BookingObj, String> outDateCol;
    private TableColumn<BookingObj, String> outAmountCol;

    private Separator separator;
    
    private ImageView iconBack;
    private Button btnBackToStart;
    private Button btnSave;
    
    
    
    public GEdit(ConEdit conEdit) {
        layout = new BorderPane();
        sceneGEdit = new Scene(layout, CVMain.lyotSizeX, CVMain.lyotSizeY);
        this.conEdit = conEdit;
        
        txtInTV = new Text(CVSubEdit.inTVTxt);
        txtOutTV = new Text(CVSubEdit.outTVTxt);
        
        inTV = new TableView<BookingObj>();
        inAccountCol = new TableColumn<BookingObj, String>("");
        inDateCol = new TableColumn<BookingObj, String>("");
        inAmountCol = new TableColumn<BookingObj, String>("");
        
        outTV = new TableView<BookingObj>();
        outAccountCol = new TableColumn<BookingObj, String>();
        outDateCol = new TableColumn<BookingObj, String>();
        outAmountCol = new TableColumn<BookingObj, String>();
        
        separator = new Separator();
        
        
        iconBack = new ImageView(new Image(getClass().getResourceAsStream("../icons/EditBack32.png")));
        btnBackToStart = new Button(CVSubEdit.btnBackToStartTxt);
        
        btnSave = new Button();
        
        setObjects();
        setLayout();
    
        
    }//constructor


    @SuppressWarnings("unchecked")
    private void setObjects() {
        
        //****** Texts ******
        txtInTV.setFont(CVSubEdit.bold18);
        txtOutTV.setFont(CVSubEdit.bold18);
        
        //****** TableViews and ther Columns ******
        inAccountCol.setText(CVSubEdit.inAccountTxt);
        inAccountCol.setStyle("-fx-font-size: 15; -fx-alignment: CENTER-LEFT;");
        inDateCol.setText(CVSubEdit.inDateTxt);
        inDateCol.setStyle("-fx-font-size: 15; -fx-alignment: CENTER;");
        inAmountCol.setText(CVSubEdit.inAmountTxt);
        inAmountCol.setStyle("-fx-font-size: 15; -fx-alignment: CENTER-RIGHT;");
        
        outAccountCol.setText(CVSubEdit.outAccountTxt);
        outAccountCol.setStyle("-fx-font-size: 15; -fx-alignment: CENTER-LEFT;");
        outDateCol.setText(CVSubEdit.outDateTxt);
        outDateCol.setStyle("-fx-font-size: 15; -fx-alignment: CENTER;");
        outAmountCol.setText(CVSubEdit.outAmountTxt);
        outAmountCol.setStyle("-fx-font-size: 15; -fx-alignment: CENTER-RIGHT;");
        
        //to branding the columns for instans-variables from BookingObj
        inAccountCol.setCellValueFactory(new PropertyValueFactory<BookingObj, String>("sourceAccount"));
        inDateCol.setCellValueFactory(new PropertyValueFactory<BookingObj, String>("date"));
        inAmountCol.setCellValueFactory(new PropertyValueFactory<BookingObj, String>("amount"));
        outAccountCol.setCellValueFactory(new PropertyValueFactory<BookingObj, String>("sourceAccount"));
        outDateCol.setCellValueFactory(new PropertyValueFactory<BookingObj, String>("date"));
        outAmountCol.setCellValueFactory(new PropertyValueFactory<BookingObj, String>("amount"));
        
        inTV.getColumns().addAll(inAccountCol, inDateCol, inAmountCol);
        outTV.getColumns().addAll(outAccountCol, outDateCol, outAmountCol);
        
        VBox.setVgrow(inTV, Priority.ALWAYS);
        VBox.setVgrow(outTV, Priority.ALWAYS);

        
        //****** Seperator ******
        separator.setOrientation(Orientation.VERTICAL);
        separator.setPadding(new Insets(50,0,25,0));
        VBox.setVgrow(separator, Priority.ALWAYS);
        
        //****** Buttons ******
        btnBackToStart.setGraphic(iconBack);
        btnBackToStart.setContentDisplay(ContentDisplay.LEFT);
        btnBackToStart.setTooltip(new MyTooltip(CVSubEdit.ttBtnToStart));
        btnBackToStart.setOnAction(conEdit);
        
        btnSave.setText("manuell speichern");
        btnSave.setOnAction(conEdit);
        
    }//setObjects
    
    
    private void setLayout() {
        
        VBox vBoxCenterLeft = new VBox();
        VBox vBoxCenterRight = new VBox();
        VBox vBoxCenterMiddle = new VBox();
        HBox hBoxCenter = new HBox();
        
        //****** for BorderPane-TOP ******
        
        //****** for BorderPane-CENTER_LEFT_TOP ******
        
        //****** for BorderPane-CENTER_LEFT ******
        vBoxCenterLeft.getChildren().addAll(txtInTV, inTV);
        vBoxCenterLeft.setPadding(new Insets(20));
        HBox.setHgrow(vBoxCenterLeft, Priority.ALWAYS);
        
        //****** for BorderPane-CENTER_RIGHT_TOP ******
        
        //****** for BorderPane-CENTER_RIGHT ******
        vBoxCenterRight.getChildren().addAll(txtOutTV, outTV);
        vBoxCenterRight.setPadding(new Insets(20));
        HBox.setHgrow(vBoxCenterRight, Priority.ALWAYS);
        
        //****** for BorderPane-CENTER_Middle ******
        vBoxCenterMiddle.getChildren().addAll(separator);
        
        //****** for BorderPane-CENTER - merging privious Boxes ******
        hBoxCenter.getChildren().addAll(vBoxCenterLeft, vBoxCenterMiddle, vBoxCenterRight);
        
        //****** for BorderPane-BOTTOM ******
        
        //BorderPane.setAlignment(btnBackToStart, Pos.CENTER_RIGHT);
    
        HBox hBoxBottom = new HBox(20);
        hBoxBottom.setAlignment(Pos.CENTER_RIGHT);
        BorderPane.setAlignment(hBoxBottom, Pos.CENTER_RIGHT);
        hBoxBottom.getChildren().addAll(btnSave, btnBackToStart);
        
        //Top
        
        //Left
        
        //Right
        
        //Center
        layout.setCenter(hBoxCenter);
        
        //Bottom
        layout.setBottom(hBoxBottom);
    
    }//setLayout
    
    
    public TableView<BookingObj> getInTV() {
        return inTV;
    }

    public TableView<BookingObj> getOutTV() {
        return outTV;
    }
    
    public TableColumn<BookingObj, String> getInAccountCol() {
        return inAccountCol;
    }

    public TableColumn<BookingObj, String> getInDateCol() {
        return inDateCol;
    }

    public TableColumn<BookingObj, String> getInAmountCol() {
        return inAmountCol;
    }

    public TableColumn<BookingObj, String> getOutAccountCol() {
        return outAccountCol;
    }

    public TableColumn<BookingObj, String> getOutDateCol() {
        return outDateCol;
    }

    public TableColumn<BookingObj, String> getOutAmountCol() {
        return outAmountCol;
    }

    public Scene getScEdit() {
        return sceneGEdit;
    }

    public Button getBtnBackToStart() {
        return btnBackToStart;
    }


    public Button getBtnSave() {
        return btnSave;
    }

}//class

1. Frage: Wieso wird eine vierte Column zusätlich generiert und wie kann ich die wegmachen?

2.Frage: Wie kann ich die Column-Breite auf den größten Column-Inhalt automatisch anpassen?
 

lam_tr

Top Contributor
Hallo BigMemo007,

das ist keine 4 Spalte, sondern die ersten 3 sind zusammen kleiner als die TableView an sich.

Ich habe mal gegoogelt und das hier gefunden, vielleich kannst du damit versuchen https://stackoverflow.com/questions/14650787/javafx-column-in-tableview-auto-fit-size

Alternativ kann man alle Spalten automatisch wachsen lassen in relativ zur TableView tableView.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);

Grüße
lam
 

dzim

Top Contributor
Ich glaube mich zu erinnern, dass man auch minWidth und percentageWidth auf den Spalten definieren kann... Wäre vielleicht auch ein Weg?
 

BigMemo007

Aktives Mitglied
@lam_tr
tableView.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
Das hat mein Problem auf Anhieb gelöst. Perfekt, danke dir.

Ich hab bis jetzt gedacht, dass die Methode einen Callback parametisert auf ResizeFeatures und Boolean erwaretet hat. Siehe hier:

void javafx.scene.control.TableView.setColumnResizePolicy(Callback<ResizeFeatures, Boolean> arg0)​


Aber woher hast du gewusst, dass die Methode auch ein statisches Argument annimmt? Eclipse sagt mir, dass das Ding eben einen Callback will. Kann jede Methode die einen Callback laut Eclipse haben will, auch mit statischen Parametern umgehen?
 

mihe7

Top Contributor
Ob Du einem Parameter eine statisch definierte Referenz übergibst oder nicht, spielt grundsäzlich keine Rolle. Die Methode erwartet eine Referenz auf ein Objekt vom Typ Callback<ResizeFeatures, Boolean> und TableView.CONSTRAINED_RESIZE_POLICY ist ein Objekt dieses Typs. Nichts ungewöhnliches zu erkennen.
 

BigMemo007

Aktives Mitglied
Ob Du einem Parameter eine statisch definierte Referenz übergibst oder nicht, spielt grundsäzlich keine Rolle. Die Methode erwartet eine Referenz auf ein Objekt vom Typ Callback<ResizeFeatures, Boolean> und TableView.CONSTRAINED_RESIZE_POLICY ist ein Objekt dieses Typs. Nichts ungewöhnliches zu erkennen.

Vielen lieben Dank. Hat super geholfen!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I JavaFX Zellen in Tableview editieren AWT, Swing, JavaFX & SWT 0
J Tableview - kann man mit Enter die Zellen wechseln AWT, Swing, JavaFX & SWT 1
E JavaFX TableView mit Zeilenumbruch in Zellen AWT, Swing, JavaFX & SWT 5
J JavaFX Bestimmte Zellen im TableView ändern (Farbe und Text) AWT, Swing, JavaFX & SWT 1
Juelin setzen background color für selected Row im Tableview AWT, Swing, JavaFX & SWT 20
M JavaFX TableView nur erste Zeile editable machen und gelb markieren AWT, Swing, JavaFX & SWT 0
Encera TableView Zeilen als Spalten im SceneBuilder AWT, Swing, JavaFX & SWT 0
T TableView Button onAction AWT, Swing, JavaFX & SWT 3
mrbody234 ArrayList<Message> in eine TableView visualisieren AWT, Swing, JavaFX & SWT 2
izoards JavaFX TableView mit Array Inhalt füllen AWT, Swing, JavaFX & SWT 1
A Mit JavaFX einzelne Zeilen in TableView farbig markieren AWT, Swing, JavaFX & SWT 5
A TableView updatet sich nicht AWT, Swing, JavaFX & SWT 3
missy72 JavaFX TableView Spalte zwischen den Zeilen AWT, Swing, JavaFX & SWT 5
W TableView füllen AWT, Swing, JavaFX & SWT 18
missy72 JavaFX TableView / IconView mit MousEvent AWT, Swing, JavaFX & SWT 7
missy72 JavaFX Performance / ImageView in TableView über TimeLine AWT, Swing, JavaFX & SWT 1
T TableView aktualisieren AWT, Swing, JavaFX & SWT 1
N JavaFX Tableview nach Löschen von Element falscher Index AWT, Swing, JavaFX & SWT 4
T TableView Zeilen einfärben AWT, Swing, JavaFX & SWT 13
T TableView über Methode befüllen AWT, Swing, JavaFX & SWT 10
missy72 JavaFX TableView / TableColumn / ObservableList / zwei Werte in einer Zelle AWT, Swing, JavaFX & SWT 2
W JavaFX TableView aktualisieren AWT, Swing, JavaFX & SWT 1
S JavaFX - mit Listener Veränderungen in einer TableView abhören AWT, Swing, JavaFX & SWT 3
D JavaFX Nullpointerexception wegen TableView AWT, Swing, JavaFX & SWT 2
S Alternative JavaFX TableView AWT, Swing, JavaFX & SWT 1
L JavaFX Tableview row callback AWT, Swing, JavaFX & SWT 0
G Bekomme ResultSet mittels ObservableList nicht ins TableView AWT, Swing, JavaFX & SWT 25
S JavaFX JavaFX TableView scrollen färbt falsche Zeilen AWT, Swing, JavaFX & SWT 1
A checkbox in einer TableView abhängig von einem anderen Celleninhalt disablen AWT, Swing, JavaFX & SWT 1
J JavaFx TableView mit CheckBox AWT, Swing, JavaFX & SWT 4
P JavaFX TableView Zelle markieren AWT, Swing, JavaFX & SWT 3
L JavaFX Tableview Datamodel AWT, Swing, JavaFX & SWT 2
M TableView Zeile hinzufügen AWT, Swing, JavaFX & SWT 5
Bluedaishi TableView mit Combox wert wird nicht in die TableView gesetzt AWT, Swing, JavaFX & SWT 38
J TableView Update/Refresh CPU AWT, Swing, JavaFX & SWT 2
B Text im Tetfeld in einer TableView darstellen AWT, Swing, JavaFX & SWT 20
ralfb1105 JavaFX Dynamisch TableView Spalten erstellen AWT, Swing, JavaFX & SWT 4
M TableView + Datenbank Aktualisierung AWT, Swing, JavaFX & SWT 4
B TableView als PDF speichern AWT, Swing, JavaFX & SWT 8
B JavaFX TableView eine Zeile markieren AWT, Swing, JavaFX & SWT 5
B JavaFX JavaFX TableView PropertyValueFactory für Werte aus HashMap AWT, Swing, JavaFX & SWT 2
L JavaFX TableView Column Sortierung AWT, Swing, JavaFX & SWT 1
L Java FX Keine Anzeige Im Tableview AWT, Swing, JavaFX & SWT 4
L JavaFX TableView kein content text ändern AWT, Swing, JavaFX & SWT 2
L JavaFX TableView mit Aktionenbuttons AWT, Swing, JavaFX & SWT 1
C JavaFX Edit TableView in Verbindung mit SceneBuilder AWT, Swing, JavaFX & SWT 1
C JavaFX ProGuard -> TableView kein Inhalt AWT, Swing, JavaFX & SWT 7
J SceneBuilder TableView Checkbox AWT, Swing, JavaFX & SWT 1
J JavaFX Elemente werden nicht zu TableView hinzugefügt AWT, Swing, JavaFX & SWT 3
F JavaFX (Tree)TableView korrekt drucken AWT, Swing, JavaFX & SWT 1
robinab JavaFX TableView column resize nach setItems() AWT, Swing, JavaFX & SWT 0
G JavaFX TableView Wert in Spalte ändern AWT, Swing, JavaFX & SWT 0
S JavaFx - ausgewählte Rows in Arraylist (Tableview) AWT, Swing, JavaFX & SWT 4
S JavaFX - Populate TableView AWT, Swing, JavaFX & SWT 2
N JavaFX TableView aus Map AWT, Swing, JavaFX & SWT 2
J TableView Daten werden nicht ausgegeben AWT, Swing, JavaFX & SWT 9
B JavaFX TableView aus Collection befüllen AWT, Swing, JavaFX & SWT 1
S JavaFX TableView einzelne Zelle Layout zuweisen AWT, Swing, JavaFX & SWT 3
zhermann TableView die zweite AWT, Swing, JavaFX & SWT 7
H Java FX List<AlbumsBean> in FXML TableView AWT, Swing, JavaFX & SWT 37
zhermann TableView wird nicht gefüllt AWT, Swing, JavaFX & SWT 14
M JavaFX JavaFX ResultSet in TableView ausgeben AWT, Swing, JavaFX & SWT 2
W JavaFX Mehrere Klassen in ein TableView AWT, Swing, JavaFX & SWT 6
MaxG. JavaFX Inhalt in Tableview wird nicht angezeigt AWT, Swing, JavaFX & SWT 11
M JavaFX berechneten Wert in TableView schreiben AWT, Swing, JavaFX & SWT 1
K JavaFX Message in TableView AWT, Swing, JavaFX & SWT 2
H TableView mit variabler Anzahl Spalten AWT, Swing, JavaFX & SWT 2
L JavaFX List oder TableView Größe dynamisch anpassen? AWT, Swing, JavaFX & SWT 4
L JavaFX TableView mit Excelfunktion AWT, Swing, JavaFX & SWT 1
D JavaFX TableView AWT, Swing, JavaFX & SWT 2
L JavaFX TableView mit XYChart verbinden AWT, Swing, JavaFX & SWT 3
blazingblade JavaFX Tableview Clock Column update AWT, Swing, JavaFX & SWT 5
P JavaFX, TableView und Datenbank AWT, Swing, JavaFX & SWT 4
K TableView: 'Komplexes' Object AWT, Swing, JavaFX & SWT 11
L JavaFX TableView background transparent machen AWT, Swing, JavaFX & SWT 7
F TableCell aus TableView holen AWT, Swing, JavaFX & SWT 8
K JavaFX TableView mit Rectangle AWT, Swing, JavaFX & SWT 3
M Befüllung der einzelnen Zeilen des TableView AWT, Swing, JavaFX & SWT 3
J JavaFX Tableview Daten hinzufügen aus anderer Klasse AWT, Swing, JavaFX & SWT 7
J Tableview Daten hinzufügen und aktualisieren AWT, Swing, JavaFX & SWT 5
N JavaFX TableView füllt nicht das gesamte ScrollPanle aus AWT, Swing, JavaFX & SWT 2
M JavaFX TableView & CSS, Rand um Tabellenkopf entfernen AWT, Swing, JavaFX & SWT 3
L JavaFX ListView oder TableView Style überschreiben? AWT, Swing, JavaFX & SWT 6
G Event Handling TableView daten in ein neues Fenster herauslesen? AWT, Swing, JavaFX & SWT 3
thet1983 JavaFX TableView Objekt Daten anzeige AWT, Swing, JavaFX & SWT 2
J JavaFX TableView - Höhe der Zeilen AWT, Swing, JavaFX & SWT 3
L JavaFX TableView mit Attributs der Modellreferenzerierung für die Spalte AWT, Swing, JavaFX & SWT 3
I JavaFX Buttons und TableView AWT, Swing, JavaFX & SWT 2
B Java FX TableView Zeilen mit verschiedenen Typen AWT, Swing, JavaFX & SWT 15
Z JavaFX TableView cellValueFactory für Arrays AWT, Swing, JavaFX & SWT 2
E JavaFX TableView mit Rechtsklick Zelle auswählen AWT, Swing, JavaFX & SWT 8
C (JavaFX 8) SQLite Datenbank in einem TableView darstellen AWT, Swing, JavaFX & SWT 2
D JavaFX TableView bleibt leer. AWT, Swing, JavaFX & SWT 8
M JavaFX TableView nach Spalte sortieren AWT, Swing, JavaFX & SWT 1
P JavaFX Dynamische TableView AWT, Swing, JavaFX & SWT 14
V Java FX POJO aus Datenbank in FX TableView / Best Practice AWT, Swing, JavaFX & SWT 0
P JavaFX TableView Item hinzufügen AWT, Swing, JavaFX & SWT 20
W JavaFX TableView frage AWT, Swing, JavaFX & SWT 5
M JavaFX Tutorial zu Tableview AWT, Swing, JavaFX & SWT 5
C JavaFX Zugriff auf TableView AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben