Найти компоненты в иерархии Java-интерфейса - PullRequest
2 голосов
/ 22 апреля 2011

С помощью этого кода я могу найти, какая вкладка выбрана, но мне нужно что-то делать с тем, что находится внутри вкладки.Как мне работать с иерархией?

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 ]

4 голосов
/ 22 апреля 2011

Вам не нужен индекс панели, вам нужен компонент, выбранный внизу.используйте getSelectedComponent () - например,

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

Чтобы уточнить исходную цель, вы хотите манипулировать клиентским объектом, который находится в JScrollPane.Вы пропускаете некоторые объекты.в вашей JScrollPane вам нужно вызвать getViewport (). getViewportView () из ScrollPane.(Источник: http://download.oracle.com/javase/tutorial/uiswing/components/scrollpane.html)

1 голос
/ 22 апреля 2011

@ Dasdasd

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

да, это правильно, (вероятно, вы положили 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...