好吧,所以这个特定问题的问题是TableColumn的性质。看起来TableColumn没有任何与.css的真实绑定,并且不止如此,即使你通过它的css ID访问它,它的属性-fx-pref-width似乎也不存在。这就是为什么你没有看到任何改变。此外,由于目前javafx中tableView潜在的bug性质,你必须设置宽度前缀,否则事情会变得有点奇怪。看到 This topic为一些奇怪的例子。
现在,解决方案是创建一个fxml控制器类并以编程方式设置宽度的值。我意识到这可能不完全适合您的解决方案,但它似乎工作得很好。例如:
我FXML.fxml:
我的主类是相同的,现在对于我的控制器:
fxmlController.java:
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.TableColumn;
/**
*
* @author William
*/
public class fxmlController implements Initializable{
@FXML TableColumn myTableColumn;
@Override
public void initialize(URL url, ResourceBundle rb) {
myTableColumn.setPrefWidth(200);
}
}
赦免怪异 'filechooserexample' 包在FXML控制器标签setter字段,我正在重新使用一个我已经设置好的大部分空白的项目和一切。因此,设置控制器的代码是:`fx:controller =“packageName.NameOfJavaClassNoExtension”'
使用该代码我能够成功设置宽度。现在,您可以使用css来设置表格列的样式,您不能使用-fx-pref-width,因为我相当肯定该属性不存在。如果您想要猜测允许的内容,请参阅: caspian.css leview-resize-after-been-moved这是所有javafx的默认.css样式表。除此之外,您可能会发现一个或两个属性,但不是您随时可以看到的吨和吨。
同样值得注意的是,要正确访问表列,.table-column将不起作用,我不这么认为。您可能需要添加一个风格getStyleClass().add("myCustomStyle");
,你可以接着用.myCustomStyle
好运访问!我希望有所帮助。