質問

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()
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top