Как добавить одну и ту же кнопку в разные “карты”. Java CardLayOut

121
30 ноября 2019, 12:00

Я хочу добавить одну и ту же кнопку в разные дочернии панели. Если я добавляю эту единственную кнопку всего в одну дочернюю панель, то все хорошо работает, а если в 2 или более панели, то эта кнопка перестает отображаться. Я могу сделать три разные кнопки с одинаковым функционалом и все заработает, но зачем такие костыли.

    package com.company;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Main {
    JFrame frame = new JFrame();
    JPanel panelCont = new JPanel();
    JPanel mainPanel = new JPanel();
    JPanel pane1 = new JPanel();
    JPanel pane2 = new JPanel();
    JPanel pane3 = new JPanel();
    JButton button1 = new JButton("to first panel");
    JButton button2 = new JButton("to second panel");
    JButton button3 = new JButton("to third panel");
    JButton buttonBack = new JButton("Back");
    CardLayout cl = new CardLayout();
    public Main() {
        panelCont.setLayout(cl);
        mainPanel.add(button1);
        mainPanel.add(button2);
        mainPanel.add(button3);
        mainPanel.setBackground(Color.YELLOW);
        pane1.setBackground(Color.BLUE);
        pane2.setBackground(Color.GREEN);
        pane3.setBackground(Color.PINK);
        panelCont.add(mainPanel, "main");
        panelCont.add(pane1, "1");
        panelCont.add(pane2, "2");
        panelCont.add(pane3, "3");
        pane1.add(buttonBack);
        pane2.add(buttonBack);
        pane3.add(buttonBack);
        cl.show(panelCont, "main");
        button1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                cl.show(panelCont, "1");
            }
        });
        button2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                cl.show(panelCont, "2");
            }
        });
        button3.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                cl.show(panelCont, "3");
            }
        });
        buttonBack.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                cl.show(panelCont, "main");
            }
        });

        frame.add(panelCont);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setBounds(200, 200, 200, 200);
        frame.setVisible(true);
    }
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new Main();
            }
        });
    }
}

Выше я говорили про кнопку buttonBack, именно она не хочет отображаться во всех трех панелях. Помогите, пожалуйста, разобраться с данной проблемой.

READ ALSO
Как конвертировать LocalDate или LocalDateTime в Calendar?

Как конвертировать LocalDate или LocalDateTime в Calendar?

Есть ли простой способ получить из объектов класса LocalDate или LocalDateTime объект класса Calendar?

111
Где можно практиковать JavaEE [закрыт]

Где можно практиковать JavaEE [закрыт]

Начал изучать JavaEE, но не знаю, где можно попрактиковать навыкиМб вы знаете где можно посмотреть готовые проекты JavaEE или не готовые, что бы самому...

107
Не читает подкаталог с файлами [закрыт]

Не читает подкаталог с файлами [закрыт]

Файлы с главного каталога считывает а с подкаталога нет в чем может быть проблема?

103
Java Server Page || Приоритет по файлам?

Java Server Page || Приоритет по файлам?

Когда запускаю JSP Web Application на Tomcat или JBoss Server, оно запускает indexjsp первым (index

120