Java 访问JScrollPane中的JTextArea
我在(多个)JTabbedPane中有一个JTextArea 我需要进入JTextArea。如果没有JScrollPane,我可以:Java 访问JScrollPane中的JTextArea,java,swing,jtextarea,Java,Swing,Jtextarea,我在(多个)JTabbedPane中有一个JTextArea 我需要进入JTextArea。如果没有JScrollPane,我可以: JTextArea c = (JTextArea)jTabbedPane1.getComponentAt(i); 在JScrollPane中如何获得它 干杯, Gazler.听起来你会在那里遇到一堆参考资料(至少过去我就是这样) 我建议您使用一个中间对象来管理这些依赖关系,并将“业务”方法转移到那里 因此,您可以使用此对象,而不是添加组件并丢失引用(或者最糟糕的
JTextArea c = (JTextArea)jTabbedPane1.getComponentAt(i);
在JScrollPane中如何获得它
干杯,
Gazler.听起来你会在那里遇到一堆参考资料(至少过去我就是这样) 我建议您使用一个中间对象来管理这些依赖关系,并将“业务”方法转移到那里 因此,您可以使用此对象,而不是添加组件并丢失引用(或者最糟糕的是,将引用复制到所有位置),该对象将具有引用:
class AppMediator {
private JTextArea area;
private JTabbetPane pane;
// etc.
public void doSomethingWithText() {
this.area.getText(); // etc
}
}
请参见设计模式。重点是将所有“视图”对象从它们所在的位置(通常作为子类中的引用)移动到公共中间对象 这条线看起来很复杂,但我想这就行了
JTextArea c = (JTextArea) (((JViewportView) (((JScrollPane) jTabbedPane1.getComponentAt(i)).getViewport()))).getView();
但我认为将您的文本区域
存储在数组列表
所以你可以这样做:
List<JTextArea> listAreas = new ArrayList<JTextArea>();
...
JTextArea c = listAreas.get(i);
希望这有帮助。我更喜欢AppMediator方法,但您也可以这样做
scrollPane.getViewport().getView()
scrollPane.getViewport().getView()