我正在使用 JFoenix 作为我的设计组件,并且我有一个 JFXTextArea,它的作用就像一个普通的 TextArea,我希望它能够在我在其中输入内容以及当它填满时根据其中的文本调整其高度。文本转到该行,但出现了一个滚动条,所以我只想让它转到该行,但我希望 TextArea 更大以适合文本,而不是有滚动条,这可能吗?
我使用 SceneBuilder 作为用户界面,我有一个 Controller 和一个用于组件的 fxml 文件。
在这里您可以看到它的样子以及我想要的样子的屏幕:
如果你想知道 JFoenix 是什么,你可以看这里: http://www.jfoenix.com/
谢谢
最佳答案
所以我这样做了,我不认为这是最干净的方法,但它确实有效,所以如果其他人尝试做同样的事情,并且可能有一些关于更好方法的建议,我将其放在这里它:
我的 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);
}
}
关于java - 增加文本区域的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53907116/