使用此代码,我可以找到选中的选项卡,但我需要对选项卡内的内容进行操作。我如何使用层次结构?
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
。
答案 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)然后你必须重复你的步骤,直到你找不到JPanel
到ViewPort
,这可能得到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