我正在使用JFoenix作为设计组件,我有一个JFXTextArea,它的作用就像普通的TextArea一样,我希望它根据其中的文本,当我在其中键入内容以及当内容填满时调整其高度。文本移至该行,但出现滚动条,所以我只希望它移至该行,但我不想让滚动条出现,而是让TextArea更大以适合文本,这可能吗?
我正在使用SceneBuilder作为用户界面,我有一个Controller和一个用于组件的fxml文件。
在这里您可以看到它的状态以及我想要它的状态的屏幕:
如果您想知道什么是JFoenix,可以在这里看看: http://www.jfoenix.com/
谢谢
答案 0 :(得分:1)
所以我是这样做的,我不认为这是最干净的方法,但确实可以完成工作,所以如果有人尝试做同样的事情,并且可能对更好的方法有一些建议,我就把它放在这里:
我的TextArea的Y布局为557,默认高度为35
//This is when you are typing, if the scrollbar go visible when we increase the size of the TextArea
private void msgFieldFull(KeyEvent event)
{
ScrollBar scrollBarText = (ScrollBar) this.msgField.lookup(".scroll-bar:vertical");
if(scrollBarText.isVisible()==true)
{
this.msgField.setLayoutY(this.msgField.getLayoutY()-10);
this.msgField.setPrefHeight(this.msgField.getPrefHeight()+10);
}
//If he is deleting somethings, the Y value can only be > 557 if the size increased so it won't get lower than 557
if(event.getCode() == KeyCode.BACK_SPACE && this.msgField.getLayoutY() != 557)
{
this.msgField.setLayoutY(this.msgField.getLayoutY()+10);
this.msgField.setPrefHeight(this.msgField.getPrefHeight()-10);
}
}
//if he does CTRL+A and delete: default values for Y position and height
@FXML
private void msgFieldEmpty(KeyEvent event)
{
if(this.msgField.getText().trim().isEmpty())
{
this.msgField.setLayoutY(557);
this.msgField.setPrefHeight(35);
}
}