Hallo!
Ich möchte einen Stundenplan machen, und die Wochentage (Mo bis So bzw Fr) sollen die gleiche Breite haben. Jedoch sollen die Spalten breiter werden, wenn sich das fenster vergrößert.
Die spalten dürfen auf keinen fall breiter werden, egal was drin steht.
Erstmal das GridPane:
Ich habe das hier
und das hier:
versucht.
Beim ersten wird das Gridpane gar nicht angezeigt, und beim zweiten, überragt es den container und die Spaltenbreite wird auch größer, wenn etwas drin ist, das breiter ist als die spalte
Hoffe mir kann wer helfen.
Danke schon mal
Ich möchte einen Stundenplan machen, und die Wochentage (Mo bis So bzw Fr) sollen die gleiche Breite haben. Jedoch sollen die Spalten breiter werden, wenn sich das fenster vergrößert.
Die spalten dürfen auf keinen fall breiter werden, egal was drin steht.
Erstmal das GridPane:
Java:
package com.ludevstudio.schoolmanager;
import java.util.ResourceBundle;
import javafx.geometry.Pos;
import javafx.scene.control.Label;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.ColumnConstraints;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.layout.TilePane;
import javafx.scene.layout.VBox;
public class Schedule extends GridPane{
ResourceBundle bundle;
int days;
int houers;
public Schedule(int houers, boolean weekend) {
setAlignment(Pos.CENTER);
setGridLinesVisible(true);
bundle = ResourceBundle.getBundle("Bundle");
if(weekend) {
this.days = 7;
} else {
this.days = 5;
}
this.houers = houers;
createHeader();
setLesson(4, 4);
scaleColumnWidth();
}
public void scaleColumnWidth() {
double width = 0.08;
ColumnConstraints c1 = new ColumnConstraints();
c1.setPercentWidth(width);
ColumnConstraints c2 = new ColumnConstraints();
c2.setPercentWidth(width);
ColumnConstraints c3 = new ColumnConstraints();
c3.setPercentWidth(width);
ColumnConstraints c4 = new ColumnConstraints();
c4.setPercentWidth(width);
ColumnConstraints c5 = new ColumnConstraints();
c5.setPercentWidth(width);
ColumnConstraints c6 = new ColumnConstraints();
c6.setPercentWidth(width);
ColumnConstraints c7 = new ColumnConstraints();
c7.setPercentWidth(width);
ColumnConstraints c8 = new ColumnConstraints();
c8.setPercentWidth(width);
getColumnConstraints().addAll(c1,c2,c3,c4,c5,c6,c7,c8);
}
public Label dayCell(int day) {
String[] days = new String[] {
bundle.getString("MainWindow.Schedulepage.Schedule.Days.Monday"),
bundle.getString("MainWindow.Schedulepage.Schedule.Days.Tuesday"),
bundle.getString("MainWindow.Schedulepage.Schedule.Days.Wednesday"),
bundle.getString("MainWindow.Schedulepage.Schedule.Days.Thursday"),
bundle.getString("MainWindow.Schedulepage.Schedule.Days.Friday"),
bundle.getString("MainWindow.Schedulepage.Schedule.Days.Saturday"),
bundle.getString("MainWindow.Schedulepage.Schedule.Days.Sunday")
};
Label cell = new Label(days[day]);
cell.setStyle("-fx-background-color: #00f; -fx-text-fill: #fff; -fx-font-weight: 700; -fx-padding: 7 15 7 15; -fx-font-size: 2em;");
GridPane.setHgrow(cell, Priority.ALWAYS);
cell.setMaxWidth(Double.MAX_VALUE);
return cell;
}
public Label houerCell(int houer) {
Label cell = new Label(houer + ". Stunde");
cell.setStyle("-fx-background-color: #00f; -fx-text-fill: #fff; -fx-font-weight: 700; -fx-padding: 7 15 7 15; -fx-font-size: 2em;");
GridPane.setHgrow(cell, Priority.ALWAYS);
cell.setMaxWidth(Double.MAX_VALUE);
return cell;
}
public Label createLesson() {
Label cell = new Label();
return cell;
}
private void createHeader() {
for(int i=0; i<days; i++) {
add(dayCell(i), (i+1), 0);
}
for(int i=0; i<houers; i++) {
add(houerCell(i+1), (0), (i+1));
}
}
public void setLesson(int day, int houer) {
BorderPane cell = new BorderPane();
cell.setStyle("-fx-background-color: red; -fx-padding: 10;");
Label labName = new Label("Naturwissenschaften");
labName.setStyle("-fx-font-size: 2em; -fx-font-weight: 700; -fx-text-fill: white; -fx-background-color: red; -fx-max-height: infinity");
Label labRoom = new Label("315");
labRoom.setStyle("-fx-font-weight: 700; -fx-text-fill: white; -fx-background-color: red;");
Label labTeacher = new Label("Brade");
labTeacher.setStyle("-fx-font-weight: 700; -fx-text-fill: white; -fx-background-color: red; ");
cell.setLeft(labName);
VBox cellInfo = new VBox();
cellInfo.getChildren().add(labTeacher);
cellInfo.getChildren().add(labRoom);
cell.setRight(cellInfo);
GridPane.setHgrow(cell, Priority.ALWAYS);
add(cell, day+1, houer+1);
}
}
Ich habe das hier
Java:
public void scaleColumnWidth() {
double width = 0.08;
ColumnConstraints c1 = new ColumnConstraints();
c1.setPercentWidth(width);
ColumnConstraints c2 = new ColumnConstraints();
c2.setPercentWidth(width);
ColumnConstraints c3 = new ColumnConstraints();
c3.setPercentWidth(width);
ColumnConstraints c4 = new ColumnConstraints();
c4.setPercentWidth(width);
ColumnConstraints c5 = new ColumnConstraints();
c5.setPercentWidth(width);
ColumnConstraints c6 = new ColumnConstraints();
c6.setPercentWidth(width);
ColumnConstraints c7 = new ColumnConstraints();
c7.setPercentWidth(width);
ColumnConstraints c8 = new ColumnConstraints();
c8.setPercentWidth(width);
getColumnConstraints().addAll(c1,c2,c3,c4,c5,c6,c7,c8);
}
und das hier:
Java:
public void scaleColumnWidth() {
for(int i = 0; i<days+1; i++) {
ColumnConstraints cc = new ColumnConstraints();
cc.setPercentWidth(1/(days+1));
getColumnConstraints().add(cc);
}
}
Beim ersten wird das Gridpane gar nicht angezeigt, und beim zweiten, überragt es den container und die Spaltenbreite wird auch größer, wenn etwas drin ist, das breiter ist als die spalte
Hoffe mir kann wer helfen.
Danke schon mal