我在 JPanel 上放置了一个“调整大小”监听器。
当监听器被触发时,我想迭代该 JPanel 的所有子组件。
我知道如何使用“e.getComponent()”在监听器内获取 JPanel 组件,但其中没有“getComponents()”可供迭代。
我想通过“e”对象来访问它,而不是使“item”成为类范围变量。
查看代码注释了解更多详细信息:
import java.awt.Color;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextPane;
import javax.swing.SwingUtilities;
import javax.swing.border.LineBorder;
public class BottomTest extends JFrame {
private static final long serialVersionUID = 1L;
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new BottomTest().setVisible(true);
}
});
}
public BottomTest() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("Test");
setSize(1000, 700);
setLocationRelativeTo(null);
JPanel container = new JPanel();
container.setBorder(new LineBorder(Color.RED, 1));
container.setLayout(new BoxLayout(container, BoxLayout.Y_AXIS));
add(container);
JPanel item = new JPanel();
item.setBorder(new LineBorder(Color.GREEN, 1));
item.setLayout(new BoxLayout(item, BoxLayout.Y_AXIS));
item.addComponentListener(new ComponentListener() {
public void componentHidden(ComponentEvent arg0) {}
public void componentMoved(ComponentEvent arg0) {}
public void componentShown(ComponentEvent arg0) {}
public void componentResized(ComponentEvent e) {
//HOW CAN I ITERATE THROUGH THE SUB-COMPONENTS OF "ITEM" HERE?
//I.E I WANT TOO SEE THE "TEXTPANE" COMPONENT HERE
//System.out.println(e.getComponent());
//THE ABOVE DOES NOT CONTAIN THE USUAL .GETCOMPONENTS()
}
});
container.add(item);
JTextPane textPane = new JTextPane();
textPane.setText("Lorem Ipsum is simply dummy text of the printing and typesetting industry.");
item.add(textPane);
}
}
最佳答案
由于您将监听器附加到 JPanel
,因此您可以转换事件源
JPanel source = (JPanel) e.getComponent();
转换后,您可以使用 Container
类 API 方法迭代子组件(getComponent( int )
、getComponentCount()
, getComponents
)
关于java - 如何在监听器内迭代 JPanel 的子组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22421343/