@Don_Conteo

Как переключаться между панелями из разных классов?

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

Вот тут все отображается
public class Display {

    public Display() {
        JFrame frame = new JFrame("MindLoop");
        frame.add(new Main());
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
        frame.setUndecorated(true);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        new Display();
    }
}


Вот тут мне как-то нужно реализовать переключение между панелями
public class Main extends CardLayout {

    public Main() {
    }
}


С этой панели нужно переключиться на Kitchen при нажатии кнопки toKitchen
public class Room extends JPanel{

    Main main = new Main();

    Image back = new ImageIcon("res/images/interior1.jpg").getImage();
    private JButton toKitchen = new JButton(new ImageIcon("res/images/arrowLeftUnpressed.png"));
    private JButton toBathRoom = new JButton(new ImageIcon("res/images/arrowRightUnpressed.png"));

    public void paint(Graphics g) {
        super.paint(g);
        g.drawImage(back, 0, 0, 1920, 1080, null);
        super.paintComponents(g);
    }

    public Room() {
        setLayout(null);
        add(toKitchen);
        toKitchen.setBounds(50, 470, 170, 170);
        toKitchen.setRolloverIcon(new ImageIcon("res/images/ArrowLeftPressed.png"));
        add(toBathRoom);
        toBathRoom.setBounds(1700, 470, 170, 170);
        toBathRoom.setRolloverIcon(new ImageIcon("res/images/arrowRightPressed.png"));
    }
}


С этой, соответственно, обратно при нажатии кнопки toRoom
public class Kitchen extends JPanel {

    Image back = new ImageIcon("res/images/kitchen.jpg").getImage();
    private JButton toRoom = new JButton(new ImageIcon("res/images/arrowRightUnpressed.png"));

    @Override
    public void paint(Graphics g) {
        super.paint(g);
        g.drawImage(back, 0, 0, 1920, 1080, null);
        super.paintComponents(g);
    }

    public Kitchen() {
        setLayout(null);
        add(toRoom);
        toRoom.setBounds(1700, 470, 170, 170);
        toRoom.setRolloverIcon(new ImageIcon("res/images/arrowRightPressed.png"));
    }
}


Если честно, я совершенно не уверен в правильности архитектуры, так что если вы меня поправите и наставите на путь истинный - буду премного благодарен
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
Erik_Mironov
@Erik_Mironov
Приветствую. Возможно это то что вы ищете.
https://docs.oracle.com/javase/7/docs/api/javax/sw...

Касаемо архитектуры пока трудно сказать, т.к. иерархия классов весьма небольшая. Единственное что я бы сделал, так это выделил среди ваших классов-компонентов общие поля и методы и вынес все это в абстрактный класс, который будет наследовать JPanel, а затем уже наследовался от него.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы