在JScrollPane中访问JTextArea

Gaz*_*ler 0 java swing jtextarea

我在JTabbedPane中的(多个)JScrollPane中有一个JTextArea.

我需要访问JTextArea.如果我没有JScrollPane,我可以这样做:

JTextArea c = (JTextArea)jTabbedPane1.getComponentAt(i);
Run Code Online (Sandbox Code Playgroud)

在JScrollPane中如何获得它?

干杯,Gazler.

Osc*_*Ryz 5

听起来你会在那里陷入混乱的参考(至少那是过去发生在我身上的事情).

我建议你让一个中间对象为你负责这些依赖,并在那里移动"业务"方法.

因此,您可以使用此对象,而不是添加组件并丢失引用(或者最糟糕的是,复制引用遍布整个地方):

class AppMediator {
     private JTextArea area;
     private JTabbetPane pane;

     // etc. 

     public void doSomethingWithText() {
          this.area.getText(); // etc 
     }
 }
Run Code Online (Sandbox Code Playgroud)

请参阅Mediator设计模式.重点是将所有"视图"对象从它们所在的位置(通常作为子类中的引用)移动到公共中间对象.