Java 从JScrollPane获取组件

Java 从JScrollPane获取组件,java,swing,Java,Swing,如果JScrollPane中有JEditorPane,如何从滚动窗格中获取编辑器 我尝试了scrollPane.getComponents(),但编辑器不在列表中。一种方法: JViewport viewport = scrollPane.getViewport(); Component[] components = viewport.getComponents(); 尽管您可以只使用一个类字段来保存对编辑器窗格的引用,这样可以更容易地获得它 编辑:根据Jeanette和Rob的说法:获取视口

如果
JScrollPane
中有
JEditorPane
,如何从滚动窗格中获取编辑器

我尝试了scrollPane.getComponents(),但编辑器不在列表中。

一种方法:

JViewport viewport = scrollPane.getViewport();
Component[] components = viewport.getComponents();
尽管您可以只使用一个类字段来保存对编辑器窗格的引用,这样可以更容易地获得它

编辑:根据Jeanette和Rob的说法:获取视口中的单个子组件的最佳方法是使用其
getView()
方法

我最初的回答让我想起H.L.门肯的一句话:

“对于每一个复杂的问题,都有一个简洁、清晰、简单且错误的解决方案。”


离开。。。即将发布:“naturally getViewportView”,但该方法出人意料地不存在,一个疯狂的不对称;-)更短的方法:JEditorPane editorPane=(JEditorPane)scrollPane.getViewport.getView();JViewport最多有一个子对象,它有api通过getView()访问该子对象(如果没有子对象,则可能返回null)。因此,不同意@Boro关于简洁性的观点;-)
JViewport viewport = scrollPane.getViewport(); 
JEditorPane editorPane = (JEditorPane)viewport.getView();