JScrollPaneの中でJTextAreaにアクセスします
質問
IはJTabbedPaneのに(複数)JScrollPaneの中JTextAreaのを持っている。
私はJTextAreaにアクセスする必要があります。私はJScrollPaneのを持っていなかった場合は、私が行うことができます:
JTextArea c = (JTextArea)jTabbedPane1.getComponentAt(i);
ときにJScrollPaneでどのように私はそれを得るのでしょうか?
乾杯、 Gazlerます。
解決
の、これはそれを行うだろうと思うこの線は複雑に見えますが、私はを。
JTextArea c = (JTextArea) (((JViewportView) (((JScrollPane) jTabbedPane1.getComponentAt(i)).getViewport()))).getView();
しかし、私はTextArea
であなたのArrayList
年代を保存するために、より興味深いものになるだろうと思います。
だから、あなたがこれを行うことができます:
List<JTextArea> listAreas = new ArrayList<JTextArea>();
...
JTextArea c = listAreas.get(i);
新しいものは、このようなものです作成します:
JTextArea c = new JTextArea();
jTabbedPane1.addTab("Title", new JScrollPane(c));
listAreas.add(c);
この情報がお役に立てば幸いです。
他のヒント
あなたは(少なくともそれは、過去に私に起こったものだ)あそこ参照の混乱に買ってあげるように
が鳴ります。
私はあなたのために、これらの依存関係を担当する中央のオブジェクトを持っているし、そこに「ビジネス」メソッドを移動するために、あなたをお勧めします。
だからではなく、参照をコンポーネントを追加し、失うの(あるいは最悪、あらゆる場所に参照を複製する)あなたが参照を持つことになります。このオブジェクトを使用することができます:
class AppMediator {
private JTextArea area;
private JTabbetPane pane;
// etc.
public void doSomethingWithText() {
this.area.getText(); // etc
}
}
メディエータのデザインパターンを参照してください。焦点は、それらが共通の中間オブジェクトに(通常サブクラスで参照されるように)どこからすべての「ビュー」オブジェクトを移動させることです。
私はAppMediatorのアプローチを好むが、あなたも行うことができます。
scrollPane.getViewport().getView()
所属していません StackOverflow