中维护
我有一个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列表。