JavaFXTableView文本对齐
如图所示,每个列的文本对齐设置为左对齐。有没有办法改变这一点?到目前为止,我已在CSS文件中尝试:JavaFXTableView文本对齐,java,css,tableview,javafx,Java,Css,Tableview,Javafx,如图所示,每个列的文本对齐设置为左对齐。有没有办法改变这一点?到目前为止,我已在CSS文件中尝试: #Cols{ text-align: right; } 我也尝试过: #Cols{ -fx-text-alignment: right; } 有人知道如何将对齐方式更改为右侧吗?所有表列的对齐方式: 从JavaFX-8开始,您可以使用新定义的CSS选择器表列 #my-table .table-column { -fx-alignment: CENTER-RIGHT; }
#Cols{
text-align: right;
}
我也尝试过:
#Cols{
-fx-text-alignment: right;
}
有人知道如何将对齐方式更改为右侧吗?所有表列的对齐方式:
从JavaFX-8开始,您可以使用新定义的CSS选择器表列
#my-table .table-column {
-fx-alignment: CENTER-RIGHT;
}
firstTextCol.setStyle( "-fx-alignment: CENTER-RIGHT;");
对于JavaFX-2,
要实现此目的,请定义CSS选择器:
#my-table .table-cell {
-fx-alignment: CENTER-RIGHT;
/* The rest is from caspian.css */
-fx-skin: "com.sun.javafx.scene.control.skin.TableCellSkin";
-fx-padding: 0.166667em; /* 2px, plus border adds 1px */
-fx-background-color: transparent;
-fx-border-color: transparent -fx-table-cell-border-color transparent transparent;
-fx-border-width: 0.083333em; /* 1 */
-fx-cell-size: 2.0em; /* 24 */
-fx-text-fill: -fx-text-inner-color;
}
并设置表视图的id
tableView.setId("my-table");
单表列的对齐方式: 从JavaFX-8开始,您可以直接将样式应用于
TableColumn
#my-table .table-column {
-fx-alignment: CENTER-RIGHT;
}
firstTextCol.setStyle( "-fx-alignment: CENTER-RIGHT;");
或者使用css
firstTextCol.getStyleClass().add( "custom-align");
在哪里
对于JavaFX-2,要对不同的列应用不同的对齐方式,需要为该列设置单元工厂。例如,假设表中的第一列应该向左对齐,而其他列使用表的默认对齐方式(在您的情况下为
中-右
)
firstTextCol.setCellFactory(新回调(){
公共TableCell调用(TableP列){
TableCell单元格=新的TableCell(){
@凌驾
public void updateItem(字符串项,布尔值为空){
super.updateItem(项,空);
setText(空?null:getString());
设置图形(空);
}
私有字符串getString(){
返回getItem()==null?”:getItem().toString();
}
};
cell.setStyle(“-fx对齐:左中;”);
返回单元;
}
});
我用过
cell.setAlignment(Pos.CENTER_RIGHT);
而不是
cell.setStyle("-fx-alignment: CENTER-LEFT;");
但是如果有CSS的话,我能把fx:id放在一个列上,然后把它的对齐方式放在CSS文件中吗?上面有很多代码只是用来设置列对齐方式。我试过了,效果很好
@FXML private TableColumn<BookingData,String>colClientMobile;
//Some code
colClientMobile.setCellFactory(new Callback<TableColumn<BookingData, String>, TableCell<BookingData, String>>() {
@Override
public TableCell<BookingData, String> call(TableColumn<BookingData, String> param) {
return new TableCellFormat();
}
});
private class TableCellFormat extends TableCell<BookingData, String>{
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
this.setText(item);
this.setAlignment(Pos.CENTER_RIGHT);
}
}
@FXML private tableColumnClientMobile;
//一些代码
colClientMobile.setCellFactory(新回调(){
@凌驾
公共TableCell调用(TableColumn参数){
返回新的TableCellFormat();
}
});
私有类TableCellFormat扩展了TableCell{
@凌驾
受保护的void updateItem(字符串项,布尔值为空){
super.updateItem(项,空);
本文件为setText(项目);
此.设置对齐(位置居中\右侧);
}
}
即使这已经两年了,这里还有另一个答案。对于每个表列,都存在一个默认的css样式类。表列
,因此,如果要更改整个表列以右中对齐,只需将其放入样式表或内联样式中:
.table-column {
-fx-alignment: CENTER_RIGHT;
}
#rowHeading {
-fx-alignment: CENTER_LEFT;
}
如果有一个列应该以另一种方式对齐,如行标题,则完全没有问题,将id附加到该列(如行标题),然后使用样式表或内联样式写入:
.table-column {
-fx-alignment: CENTER_RIGHT;
}
#rowHeading {
-fx-alignment: CENTER_LEFT;
}
它应该在左中心。无需大量编码。一个快速修复方法是在SceneBuilder中选择列,然后将属性添加到样式字段中 再简单不过了 对于单个列(或任何选择) 在fxml中声明样式类
<TableColumn styleClass="centered-table-column" />
或用于所有列
.table列{
-fx对齐:中心;
}
它是一个ID还是一个类?您也可以尝试text align:right!重要的
@HamZaDzCyberDeV应该是我使用的id:col.setId(“Cols”);可悲的是,这并没有改变它:这起作用了!我该怎么做才能使图例(我的图片中的测试)不移动?我同意您应该能够为列设置css id或类,然后使用适当的css选择器选择单元格进行样式设置-但它不起作用(我认为这是一个bug)。我为此创建了一个问题跟踪条目:如果我尝试将此代码与可编辑列一起使用,它将不起作用。要么是编辑作品,要么是改编。您能否提供一个代码示例,使文本与pos.CENTER_RIGHT对齐的可编辑列取决于,您可能需要使用-fx alignment:CENTER_RIGHT!重要的代码>以使其能够收听。