0

これは、自動サイズ変更する TextArea の私のコードです (私は Errai を使用しているため、TextArea は注入されます):

@Inject
@DataField
TextArea content;

@AfterInitialization
public void afterInit(){
content.getElement().setAttribute("wrap","off");

        content.addKeyUpHandler(new KeyUpHandler() {
            @Override
            public void onKeyUp(KeyUpEvent event) {
                $(content)
                        .css("overflow-y", "hidden")
                        .css("overflow-x", "auto")
                        .css(CSS.HEIGHT, "300px")
                        .css(CSS.HEIGHT, DOM.getElementPropertyInt(content.getElement(),"scrollHeight")  + "px");
            }
        });

        content.addValueChangeHandler(new ValueChangeHandler<String>() {
            @Override
            public void onValueChange(ValueChangeEvent<String> event) {
                $(content)
                        .css("overflow-y", "hidden")
                        .css("overflow-x", "auto")
                        .css(CSS.HEIGHT, "300px")
                        .css(CSS.HEIGHT, DOM.getElementPropertyInt(content.getElement(),"scrollHeight")  + "px");
            }
        });

        content.addMouseUpHandler(new MouseUpHandler() {
            @Override
            public void onMouseUp(MouseUpEvent event) {
                $(content)
                        .css("overflow-y", "hidden")
                        .css("overflow-x", "auto")
                        .css(CSS.HEIGHT, "300px")
                        .css(CSS.HEIGHT, DOM.getElementPropertyInt(content.getElement(),"scrollHeight")  + "px");
            }
        });
}

このコードは、注意したいいくつかの問題で正常に動作します。

  • コードが洗練されていない、コードが冗長である、単純化する方法はありますか
  • 入力すると TextArea が自動拡張され、CTRL + V コマンドでもコンテンツに合わせて拡張されますが、右クリック + コンテキスト メニューの項目を貼り付けても自動拡張されないため、TextArea を 2 回目にクリックして拡張する必要があります。 .
  • TextArea が大きくなると非常に急勾配になりますが、スムーズな効果を得ることができますか?
4

0 に答える 0