Массив элементов разных классов

Модератор: Absurd

Ответить
keo
Сообщения: 46
Зарегистрирован: 25 апр 2006, 17:35
Откуда: Украина, Киев

На основании класса 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();
Как объявить массив чтобы работало - не знаю

Как сделать такое и вообще можно ли?
Chester
Сообщения: 60
Зарегистрирован: 06 дек 2004, 10:46
Откуда: Kyiv, Ukraine
Контактная информация:

Можно, попробуй ArrayList :)
... She gave me something, it was a mushroom...
Аватара пользователя
Oscar
Сообщения: 963
Зарегистрирован: 29 май 2004, 13:44
Откуда: Мюнхен (рожден в Киеве)
Контактная информация:

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);
keo
Сообщения: 46
Зарегистрирован: 25 апр 2006, 17:35
Откуда: Украина, Киев

Спасибо! Буду пробовать.
keo
Сообщения: 46
Зарегистрирован: 25 апр 2006, 17:35
Откуда: Украина, Киев

Спасибо за помощь! ArrayList - именно то что надо.
Жаль только у меня Java 1.4 попробовать как работает с <JPanel> не получилось...
Ответить