在JScrollPane中获取JPanel



我有一个JScrollPane,我在JScrollPane中放置了一个JPanel。JPanel包含可变数量的jlabel。

我是这样"新建"它的:

JPanel dataPanel  = new JPanel();
//then do a for loop to put a few JLabels in dataPanel
JScrollPane scrollPane = new JScrollPane(dataPanel);

我想知道如何在另一个类中获得那些JLabel ?我尝试了下面的代码,但不能与ClassCastException一起工作。在这个类中,我成功地获得了JScrollPane,我将使用scrollPane来表示它。

//I only put a panel in the JScrollPane, so I used 0 in the getComponent() method
JPanel panel = scrollPane.getComponent(0);
for(int i = 0; i < panel.getComponentCount(); i++){
    JLabel label = (JLabel)panel.getComponent(i);
}

事实上,在语句:

JPanel panel = scrollPane.getComponent(0);

抛出ClassCastException。

java.lang.ClassCastException: javax.swing.JViewport cannot be cast to javax.swing.JPanel

感谢您的帮助

JScrollPane#getViewport#getView

你必须转换回你的组件类型

更好的解决方案是在数组或List

中维护JLabel s列表。

相关内容

  • 没有找到相关文章

最新更新