在Java的GUI层次结构中查找组件

时间:2011-04-22 13:46:28

标签: java swing user-interface

使用此代码,我可以找到选中的选项卡,但我需要对选项卡内的内容进行操作。我如何使用层次结构?

EditPane.addChangeListener(new ChangeListener() {
// This method is called whenever the selected tab changes
public void stateChanged(ChangeEvent evt) {
    JTabbedPane pane = (JTabbedPane)evt.getSource();

    // Gets current tab
    int sel = pane.getSelectedIndex();
}
});

标签内的组件是JScrollPane

2 个答案:

答案 0 :(得分:4)

您不需要窗格的索引,您需要在下面选择组件。 使用getSelectedComponent() - 例如

JTabbedPane pane = (JTabbedPane)evt.getSource();
JComponent myComponent = pane.getSelectedComponent();

为了阐明您的原始目标,您希望操纵生活在JScrollPane中的客户端对象。你错过了一些对象。 在您的JScrollPane中,您需要从ScrollPane调用getViewport()。getViewportView()。 (来源:http://download.oracle.com/javase/tutorial/uiswing/components/scrollpane.html

答案 1 :(得分:1)

@ Dasdasd

I already checked it out but it only returns ViewPorts and ScrollBars

是的,这是正确的,(probalby在那里你把JPanel)然后你必须重复你的步骤,直到你找不到JPanelViewPort,这可能得到JComponents的另一种方式,但这对于JComponents

的层次结构来说是非常好的教训
Component[] components = xxx.getComponents();
  for (int i = 0, l = components.length; i < l; i++) {
     if (components[i] instanceof JScrollPane) {
         JScrollPane scr = (JScrollPane) components[i];
            Component[] components1 = scr.getComponents();n