Страница 1 из 1
Массив элементов разных классов
Добавлено: 10 май 2006, 17:46
keo
На основании класса JPanel я сделал несколько своих классов. Теперь мне нужно создать массив, элементами которого мог бы быть любой из классов.
Код: Выделить всё
// Классы
public class TextPanel extends JPanel {}
public class DatePanel extends JPanel {}
public class LinkPanel extends JPanel {}
// Заполнение
Mas[1]=new TextPanel();
Mas[2]=new DatePanel();
Mas[3]=new LinkPanel();
Mas[4]=new TextPanel();
Как объявить массив чтобы работало - не знаю
Как сделать такое и вообще можно ли?
Добавлено: 10 май 2006, 19:34
Chester
Можно, попробуй ArrayList

Добавлено: 10 май 2006, 19:57
Oscar
keo, мда, ну в общем, как
Chester сказал:
Код: Выделить всё
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.JPanel;
public class TestArray {
class TextPanel extends JPanel {}
class DatePanel extends JPanel {}
class LinkPanel extends JPanel {}
ArrayList<JPanel> panels = new ArrayList<JPanel>();
public TestArray() {
panels.add(new TextPanel());
panels.add(new DatePanel());
panels.add(new LinkPanel());
}
public String toString2() {
String toReturn = "";
for(int i = 0; i < panels.size(); i++) {
toReturn += panels.get(i).getName() + "\n";
}
return toReturn;
}
public String toString() {
String toReturn = "";
for(Iterator<JPanel> i = panels.iterator(); i.hasNext();) {
toReturn += i.next().getName() + "\n";
}
return toReturn;
}
public static void main(String[] args) {
new TestArray();
}
}
(c)
java.util.ArrayList
Если Java младше 1.5, то
<JPanel> нужно убрать и и кастовать элементы при обращении к ним:
Код: Выделить всё
TextPanel textPanel = (TextPanel)panels.get(0);
Добавлено: 10 май 2006, 21:24
keo
Спасибо! Буду пробовать.
Добавлено: 11 май 2006, 00:51
keo
Спасибо за помощь! ArrayList - именно то что надо.
Жаль только у меня Java 1.4 попробовать как работает с <JPanel> не получилось...