お返事ありがとうございました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回は行う必要があります。それは痛みですが、それは仕事です。
こんにちはスタニスラフ、あなたの提案を投稿する前に、私は同様の考えで少し遊んだ。私は遠くにはいなかった。私は無効化コンポーネントに行った、あなたは言ったように。しかし、これは私が立ち往生したところです。私はこのコンポーネントよりも遠くには立ち入ることができませんでした。 getComponentAtは子ではありません。次に、invalidatorコンポーネントが最後のものであると仮定し、いくつかのリスナーを追加しようとします。それらのリスナーはトリガーされませんでした。私の次のオプションは、デフォルトを使用する代わりにcomponentViewをインターセプトして作成することです。 – tadpole