0

JEdi​​torPane を使用して HTML テキストを表示しています。htmlファイルに含まれている場合

<form action="WORK3.html" method="get">
  <input type="text" value="Enter your name here!" size="25">
</form>

JEdi​​torPane は、エディター ウィジェット内にテキスト フィールド ウィジェットを配置します。私がやりたいのは、テキスト フィールド内の値を取得することです。テキストフィールドのテキスト値またはウィジェットを取得するにはどうすればよいですか?

4

3 に答える 3

1

HTML コントロールは、プライベート 内部クラス Invalidator extends Container にラップされた JEditorPane に追加されます。

したがって、JEditorPane のすべての子コンポーネントを取得できます。それぞれが Invalidator インスタンスである必要があります。Invalidator の唯一の子は、編集コンポーネント自体です (タグの JTextFlied など<input>)。

于 2012-04-13T05:48:41.410 に答える
0

回答に時間を割いてくれたStanislavに感謝します。コンポーネントを取得しようとするのは私には難しすぎました。私は問題を回避する方法を見つけました。これが他の誰かに役立つことを願っています。ウィジェットにアクセスする方法は見つかりませんでしたが、独自のテキストウィジェットを作成して、デフォルトのウィジェットを置き換えることができます。そうすれば、ウィジェットを制御できます。これを行うには、HTMLEditorKit.HTMLFactoryをサブクラス化する必要があります。このクラスでは、オーバーライドする必要があります

public View create (Element elem_) {
    Document doc = elem_.getDocument();
    Object obj = elem_.getAttributes().
        getAttribute(StyleConstants.NameAttribute);

    HTML.Tag tag = (HTML.Tag) obj;

    if (tag.toString().equals ("input")) {
        // you can replace your widget here if you want
        // i choose to use the default but save the view for
        // my own use later
        ComponentView view = (ComponentView)super.create (elem_);
        // save the component view to where you want to access 
        // later.  you can retrieve the component from the 
        // ComponentView and cast it to back to JTextField
        _editor.saveView (view);

        return (view);
    }

    else {
        return (super.create (elem_);
    }
}

制御するウィジェットのタイプごとに、これを少なくとも1回実行する必要があります。それは苦痛ですが、それは仕事をします。

于 2012-04-13T14:47:13.860 に答える
0

コンポーネントを textPane 内に挿入した場合、コンポーネントをその Invalidator クラスから「ラップ解除」するだけです。

//Loop through the components, maybe looking for some in particular

for (Component cont : myTextPane.getComponents()) {
//Unwrap your component, means take the only one component from the wrapper container
    Component comp = ((Container) cont).getComponent(0);

    //Do your things with your component
    // ...      
}
于 2012-05-02T04:59:59.960 に答える