Написание Java-класса для создания CardLayouts для моей программы - PullRequest
0 голосов
/ 30 декабря 2011

У меня есть представление с вкладками в моей программе, и под каждой вкладкой у меня есть несколько панелей, между которыми я вращаюсь с помощью кнопок. Я решил реализовать CardLayout для каждой из этих вкладок, и учитывая, что у меня есть около 7 вкладок, я решил написать класс, чтобы сделать вещи немного лучше. Класс называется PanelSystem, он принимает JPanels, которые уже были созданы, и добавляет их в CardLayout. Я также буду реализовывать метод switchPanel для перемещения между панелями. Пока что у меня есть:

public class PanelSystem {

JPanel cards;
CardLayout cl;

public PanelSystem(JPanel...panels) {
    // Create Panel with card layout
    cards = new JPanel(new CardLayout());

    // Add all the panels to the card system
    for (JPanel p : panels) cards.add(p);

    // Gains access to the card layout?
    cl = (CardLayout)(cards.getLayout());

    // Show starting card
    cl.show(cards, *UNIQUE IDENTIFIER*);
}
}

Поскольку для каждой вкладки существует разное количество JPanels, мне пришлось реализовать строку панелей JPanels .... Я не уверен, что это работает правильно, но проблема возникает в конце конструктора, где я пытаюсь показать первую карту, так как у нее нет уникального идентификатора из-за способа, которым я их добавил. Любые мысли о том, как я мог это исправить ?? Заранее спасибо, ребята!

1 Ответ

0 голосов
/ 30 декабря 2011

Вы можете получить доступ к varargs, как если бы это был массив (каким он является, в любом случае).Как насчет того, чтобы выполнить цикл с классическим циклом for

for (int i = 0; i < panels.length; i++) {
    cards.add(panels[i], Integer.toString(i));
}

, а затем в конце

cl.show(cards, "0");

Редактировать: я ржав на макетах Swing, точно не помню,ваш идентификатор должен быть строкой или просто любым объектом, но вы должны быть в состоянии выяснить это отсюда.

...